독학사2단계_컴퓨터시스템구조_9장 시스템 버스 및 입출력장치
by 담배맛구마9장 시스템 버스 및 입출력장치
가. 시스템버스
1) 시스템버스 구조
CPU, I/O 장치, 기억장치들을 상호 연결해주는 중심 통로를 시스템 버스라고한다.
시스템 버스는 제어버스(Control Bus), 주소버스(Address Bus), 데이터버스(Data Bus)가 있다.
2) 데이터버스(Data Bus)
데이터버스를 통해 주기억장치로부터 읽거나 쓸 데이터가 전송된다. 데이터버스의 크기는 CPU가 한 번에 전송가능한 데이터의 크기와 같다.
양뱡향의 버스이다.
3) 주소버스(Address Bus)
주소버스를 통해 주기억장치의 데이터를 읽고 쓰기 위한 주소 또는 입출력장치가 결정된다. CPU의 주소버스가 n개이면 총 개의 주소개의 주소를 지정할 수 있다.
단방향의 버스이다. CPU에서는 레지스터 이름 자체가 주소이기에 필요하지 않다.
4) 제어버스(Control Bus)
제어버스는 외부장치에서 CPU에 어떤 동작을 요구하는 각종 제어 신호가 전송된다.
i) Read 제어 신호 (RD)
기억장치나 입출력장치에 RD신호를 주면 데이터버스에 데이터가 실린다.
ii) Write 제어 신호 (WR)
기억장치나 입출력장치에 WR신호를 주면 데이터버스의 내용이 기억장치나 입출력장치에 저장된다.
iii) Interrupt 제어 신호
iv) Reset 신호
시스템의 모든 기능을 초기화하는 제어 신호
5) 버스 대역폭(Bus Bandwidth)
대역폭이란 데이터가 이동하는 버스를 통해 단위 시간당 전송하는 데이터의 크기다. 단위로는 MB/s 와 GB/s가 있다.
대역폭은 해당 버스의 클록 주기와 데이터 버스의 폭으로 결정된다.
즉, 버스 대역폭은 버스를 통해 단위 시간당 전송할 수 있는 데이터의 양이다.
버스 대역폭 = 버스의 클럭 주파수 x 데이터 버스의 폭
예를들어
버스의 클록 주파수가 100Mhz이고 데이터 버스의 폭이 32Bit(4Byte)
즉 버스 대역폭은 400 MByte/sec 이다.
6) 시스템버스 기본동작
시스템버스에서의 동작은 크게 읽기와 쓰기 동작으로 이루어진다. 이 동작들은 클록에 동기화되어 수행될 수도 있고 클록에 상관없이 수행될 수도있다.
i) 동기식 버스(Synchronous Bus)
기준 클록을 가지고 그 클록에 맞추어 정보가 전송되는 방식이다. 회로구성은 간단하나 클록의 주기보다 짧은 주기의 버스의 동작은 기다려야 한다는 단점이 있다.
중형급 시스템에서 사용된다.
ii) 비동기식 버스(Asynchronous Bus)
클록을 사용하지 않고 관련된 버스들의 동작여부로 판단한다. 시간낭비는 없으나 회로가 복잡하다는 단점이 있다. 소형급 시스템에서 사용된다.
나. 버스중재(Arbitration)
※ 버스경합(Bus Contention)
다수의 장치들이 하나의 시스템 버스에 동시에 사용을 요구하는 현상을 이른다. 이를 위해 버스 중재기가 필요하다.
※ 버스 중재기(Bus Arbiter)
한 장치씩 차례대로 사용할 수 있게 중재하는 하드웨어 장치를 이른다.
즉, 어떤 장치가 시스템 버스를 사용하기 위해서는 버스 중재기에 버스 요청(Bus Request) 신호를 보내고
버스 중재기가 버스 승인(Bus Grant) 신호를 장치에 보내 장치가 버스를 사용할 수 있도록 승인한다.
버스 승인을 받은 장치는 버스 사용 중지(Bus Busy) 신호를 보내고 버스를 사용하게 된다.
1) 병렬 중재방식(Parallel Arbitration)
각 장치마다 BR, BG, BB 신호선을 연결하는 방법이다.
2) 직렬 중재방식(Serial Arbitration)
모든 장치가 모든 BR, BG, BB신호선은 공유하는 데이지 체인(Daisy Chain) 방식으로 이루어져있다.
특정 장치가 버스 승인 신호를 버스 중재기로 보내는게 아니라 가까운 다른 장치로 보내게 되고
이를 받은 다른 장치는 그 신호를 다시 넘겨주는 식으로 버스 중재기로 신호를 보낸다. 버스 중재기에서 가까울수록 우선순위가 높다.
우선순위 낮으면 씹힐수도 있는듯
매우 경제적이지만 특저 장치가 독점할 위험이 있고 하나의 장치가 고장나면 신호를 받을수 없다는 단점이 있다.
3) 폴링 방식(Polling Scheme)
주기적 검사방식이라고도 한다. 버스 중재기가 각 장치에게 버스 사용 여부를 체크하는 방식이다.
하드웨어로 구현된 폴링 방식과 소프트웨어로 구현된 폴링 방식이 있다.
i) 하드웨어 폴링 방식
버스 중재를 위해 폴링회선으 따로 중재기와 각 장치와 연결되어 있다.
이 폴링회선은 버스를 각 장치가 버스 중재기로 전송한 고유번호를 통해 버스 사용을 요구한 장치를 찾는데 사용한다.
버스를 사용후에 장치가 BB 신호를 해제하면 다시 버스 중재기는 다시 중재를 시작한다.
각 장치의 고유번호대로 순차적으로 발생하기에 버스 사용권을 받는데 있어서시간이 길어지는 단점이있다.
ii) 소프트웨어 폴링 방식
구성은 하드웨어 폴링 방식과 동일하다. 하지만 폴링의 순서를 중재기 내에서 CPU가 관리하는 방식이라 우선순위와 융통성이 높다는 장점이 있다.
하지만 소프트웨어라 속도가 느리다는 단점이 있다.
다. 입출력장치 제어
1) 입출력장치 제어기
다음은 기본저인 입출력 시스템이다.
Interface는 I/O Port이며 CPU의 레지스터와 I/O 간의 정보 전송을 제어 한다.
고성능 컴퓨터시스템에서는 CPU의 기능을 가지는 I/O Controller를 설치하여 입출력을 처리하게 한다.
대표적인 I/O Controller는 DMA 제어기, 채널 제어기, 입출력 프로세서(IOP) 등이 있다.
2) 입출력장치 제어기 동작순서
입출력을 하는 방법은 입출력을 시작하는 주체와 입출력 제어기에 따라서
CPU에 의한 입출력
DMA 제어기에 의한 입출력
채널 제어기에 의한 입출력
등으로 구분가능
다음은 CPU에 의한 입출력 방식이다
while( !(동작완료??) ){
if( flag == 0 ){
I/O 장치에서 데이터를 버스에 실어준다.
Interface는 데이터레지스터(DR)로 읽어 들인다.
그리고 flag를 1로 변경한다.
}
else if( flag == 1){
CPU 측에서 Interface의 데이터레지스터(DR)의 내용을 레지스터로 읽어 들인다.
그리고 flag를 0으로 변경한다.
}
}
라. 입출력 주소 지정
컴퓨터 시스템의 입출력 장치는 고유의 장치번호 혹은 주소로 구별을 한다.
CPU, Main Memory, I/O Device가 공통의 버스를 공유하는 컴퓨터시스템의 I/O 방식은 다음 두 가지가 있다.
1) 기억장치사상 입출력(Memory Mapped I/O)
입출력 장치를 접근할 때, 입출력과 메모리의 주소 공간을 분리하지 않고 하나의 메모리 공간에 취급하여 배치하는 방식이다.
입출력 장치의 메모리와 레지스터를 주 기억장치와 같은 공간에 배치하기에 접근할때도 주 기억장치에 접근하는 것과 동일한 명령어를 쓴다.
주 기억장치의 용량의 감소를 가져오는 단점이 있다.
2) 분리형 입출력(Isolated I/O)
입출력 장치와 주 기억장치의 영역을 따로 두는 방법이다. 별도로 할당되기에 접근할때에는 별도의 접근 명령어를 사용한다.
마. 인터럽트를 이용한 입출력
1) 인터럽트 구동 입출력(Interrupt-driven I/O)
프로그램에 의한 입출력 방식은 CPU가 항상 flag값을 감시하는 방식인데 이를 보완한 방식으로
Interface가 데이터 전송이 필요하면 CPU에 인터럽트를 발생시키게되고
CPU는 이 인터럽트를 처리하면서 입출력 데이터를 읽어들인다.
2) 다중 입터럽트 선을 사용하는 방식
CPU에 한개의 인터럽트 신호만이 아니라 여러개의 I/O Controller에게서 인터럽트 신호를 받을수 있는 방식
3) 데이지 체인(Daisy Chain) 방식
인터럽트 요구선(INTR)이 단일 회선으로 이루어져있고 입출력 제어기들이 공유하고 있고
인터럽트 승인신호선(INTA)는 가장 가까운 입출력 제어기에 출력된다.
인터럽트를 요청하지 않으면 다음 입출력 제어기에게 승인신호를 넘긴다.
INTR에 인터럽트 요청이 있으면 CPU는 INTA를 가장 우선순위가 높은 I/O Controller의 PI로 보낸다.
해당 I/O Controller가 인터럽트를 요청했으면 PO값은 0으로 하고 인터럽트 벡터 주소(각 장치의 고유 주소)를 CPU로 보낸다.
인터럽트를 요청하지 않았으면 PO를 통해 다음 I/O Controller로 INTA신호를 넘긴다.
우선순위르 포함한 회로이다.
4) 소프트웨어 폴링 방식
데이지 체인 방식처럼 INTR선은 공통으로 연결되어 있고 인터럽트를 요구한 장치를 TEST신호선으로 찾아 나가는 방법이다.
인터럽트를 요청한 장치를 찾으면 CPU는 그 장치를 위한 서비스 루틴으로 분기하여 서비스를 수행한다.
바. DMA(Driect Memory Access)를 이용한 입출력
1) DMA 제어기
이 때까지 데이터 전송방법은 CPU를 경유 경유하여 데이터가 이동했다.(PIO; DMA의 반대 개념)
CPU의 개입 없이 입출력장치와 주기억장치 사이에서 데이터를 직접 전송시키는 방법을 직접 메모리 접근(DMA)라고 한다.
DMA에 의한 입출력이 수행되는 동안은 CPU는 주기억장치 버스를 제어하지 못한다.
주기억 장치와 입출력 장치간의 데이터 전송을 위해
CPU는 DMAC(DMA Controller)에게 제어권을 넘기고 데이터 전송이 완료할때까지 개입하지 않는다.
데이터 전송은 DMAC가 주기억장치 버스를 통해 CPU에게 버스 요구(Bus Request)를 신청하면
CPU는 실행중인 명령어의 실행을 끝내고 주소버스, 데이터버스, 제어 버스를 끝고 버스 승인(Bus Grant)을 준다.
버스 사용권을 넘겨받은 DMAC는 데이터를 직접 주기억장치에서 읽거나 쓴다. 이 상태를 DMAC가 CPU의 메모리 사이클을 훔친다고 한다.(Cycle Stealing)
전송이 끝나면 DMAC는 CPU에게 인터럽트 신호로 데이터 전송이 끝남을 알린다.
DMAC가 데이터를 전송하는 방법
i) 데이터를 블록으로 대량 보내는 방식(DMA Burst Transfer)
DMAC가 장시간 버스를 사용하므로 CPU의 동작이 지연된다는 단점이 있다.
ii) 한 데이터씩 전송하는 방식
Cycle Stealing 방법이며 한번에 하나의 사이클만 DMA에게 뺏기게됨
2) DMA 동작순서
1. CPU가 처음에 DMA를 초기화 한다.
-i) 주기억 장치에 저장될 장소의 시작 주소
-ii) 전송될 데이터의 워드 수
-iii) 입출력 장치의 주소
-iv) 읽기 쓰기 지정자
2. MDAC가 CPU에게 버스요구신호를 보낸다.
3. CPU가 승낙신호를 보낸다.
4. DMA가 동작이 끝나면 CPU에 인터럽트신호를 보낸다.
5. CPU는 다시 원래의 하던일을 다시 수행한다.
3) 사이클 스틸링(Cycle Stealing)
DMAC가 데이터 전송을 위해 CPU에게서 한 사이클 동안만 버스 사용권을 넘겨받는 것을 DMA Cycle Stealing이라고 한다.
'한아전(독학사)의추억' 카테고리의 다른 글
140519_MFC_Database 연동 (0) | 2014.05.19 |
---|---|
독학사2단계_컴퓨터시스템구조_10장 컴퓨터구조의 경향 (0) | 2014.05.12 |
독학사2단계_컴퓨터시스템구조_8장 보조기억장치 (0) | 2014.05.11 |
독학사2단계_컴퓨터시스템구조_7장 기억장치 (0) | 2014.05.11 |
독학사2단계_컴퓨터시스템구조_6장 제어장치 (1) | 2014.05.10 |
블로그의 정보
정윤상이다.
담배맛구마