시스템 버스, I/O 및 인터럽트
1. 시스템 버스
1-1. 시스템 버스의 조직
- 시스템 버스에 접속되는 모든 요소들은 버스를 통하여 상호간에 정보를 교환하고, 동작 시간을 조정하기 위한 클록 신호 전송
- 시스템 버스를 구성하는 선들의 수는 한 번에 전송하는 데이터 비트들의 수가 기억장치 비트들의 수 및 제어 신호들의 수에 따라 결정
-
데이터 버스: 시스템 요소들 사이에 데이터를 전송하는 데 사용되는 선들의 집합
- CPU가 8비트씩 읽어오면 8개의 선, 32비트씩 읽어오면 32개의 선이 필요
- 데이터는 CPU-기억장치, CPU-I/O장치 및 기억장치-I/O 장치 사이에 양방향으로 전송되기 때문에, 데이터 버스는 양방향 전송을 지원해야 함
-
주소 버스: CPU가 기억장치나 I/O 장치에 액세스할 때 주소 비트들을 전송하는 데 사용되는 선들의 집합
- 주소는 CPU에 의해서만 발생되기 때문에 단방향 전송 기능만 있으면 됨
- 주소 버스의 폭은 CPU가 주소 지정할 수 있는 전체 기억장치 용량을 결정
-
제어 버스: 제어 신호들을 전송하기 위한 선들의 집합
- ex) 기억장치 쓰기/읽기 신호, I/O 쓰기/읽기 신호
-
버스 마스터: 시스템 버스 사용의 주체가 되는 요소
- 일반적인 컴퓨터 시스템에서는 CPU와 I/O 제어기 등이 버스 마스터
- 동기식 버스 시스템에서는 기억장치 모듈도 버스 마스터가 될 수 있음
- 두개 이상의 마스터들이 동시에 버스를 사용하고자 할 때는 순서대로 사용하도록 버스 중재를 해주어야 함
- 중재 버스의 종류
- 버스 요구 신호: 버스 마스터가 버스 사용을 원하고 있음
- 버스 승인 신호: 버스 사용을 요구한 마스터에게 사용을 허가
- 버스 사용 중 신호: 현재 어떤 마스터가 버스를 사용하고 있는 중
- CPU와 I/O 장치 간의 비동기적 동작을 지원하는 인터럽트 메커니즘을 위한 제어 신호
- 인터럽트 요구 신호
- 인터럽트 확인 신호
- 버스 대역폭: 버스를 통하여 단위시간 당 전송할 수 있는 데이터량으로서, 단위는 초당 바이트 수로 나타냄
1-2. 시스템 버스의 기본 동작
- 버스 상의 모든 동작들은 쓰기 동작과 읽기 동작으로 구분
-
동기식 버스: 모든 버스 동작들이 발생하는 시간이 공통의 버스 클록을 기준으로 결정되는 버스
- 인터페이스 회로가 간단하는 장점
- 버스 클록의 주기가 가장 오래 걸리는 버스 동작의 소요 시간을 기준으로 정해져야 하기 때문에, 클록 주기보다 짧은 시간이 걸리는 버스 동작의 경우 동작이 완료된 후에도 기다려야 한다는 단점
-
비동기식 버스: 버스 동작들의 발생 시간이 다른 버스 동작의 발생 여부에 따라 결정되는 버스
- 동기식 버스에서와 같이 낭비되는 시간이 없다는 장점
- 연속적 동작들을 처리하기 위한 인터페이스 회로가 복잡해지는 단점
2. 버스 중재
- 버스 경합이 발생한 경우 버스 마스터들 중에서 한 개씩 선택하여 순서대로 버스를 사용할 수 있게 해주는 행위
- 버스는 Fair하게 배분되어야 하며, 배분으로 인한 Starvation 현상이 없어야 함
2-1. 병렬 중재 방식
각 버스 마스터가 독립적인 버스요구 신호를 버스 중재기로 보내며, 별도의 버스 승인 신호를 받는 방식
1) 중앙집중식 고정-우선순위 방식
- 각 버스 마스터에 지정된 우선순위가 변하지 않는 고정-우선순위 방식과 우선순위가 계속 변하는 가변-우선순위 방식이 존재
- 각 버스 마스터는 자신의 버스 요구(BREQ)선을 가지며, 이들은 모두 하나의 버스 중재기로 접속
- 버스 중재기는 한 개 이상의 버스 요구 신호를 받아서, 그 중 우선순위가 가장 높은 마스터의 버스 승인(BGNT) 신호 셋
- BBUSY 신호는 어떤 버스 마스터가 버슬르 사용하고 있는 중이라는 것을 의미
- 각 마스터에 대한 BGNT 신호는 더 높은 우선순위를 가진 마스터가 버스 요구를 발생하지 않은 상태에서 BREQ를 1로 세트했을 때만 활성화 가능
2) 분산식 고정-우선순위 방식
- 모든 버스 마스터들이 중재기를 한 개씩 가지고 있음
- 자신보다 더 높은 우선순위를 가진 버스 마스터들의 버스 요구 신호들을 입력으로 받아 검사하고, 그들 중 어느 것도 버스 사용 요구를 하지 않은 경우에만 자신의 버스 승인 신호를 셋
- 분산식 중재 방식은 중앙집중식에 비하여 중재 회로가 간단하기 때문에 동작 속도가 더 빠르다는 장점
- 그러나, 고장을 일으킨 중재기를 찾아내기가 힘들며, 한 중재기의 고장이 전체 시스템에 동작에 영향을 줄 수도 있다는 단점 존재
3) 가변 우선순위 방식
- 버스 중재기가 시스템의 상태 또는 조건에 따라 각 버스 마스터들의 우선순위를 계속 바꾸어 줌
- 중재 회로는 더 복잡해지지만, 버스 마스터들이 버스를 균등하게 사용할 수 있게 됨
- 최상위 우선순위를 가진 마스터가 버스를 독점하거나, 최하위 우선순위를 가진 마스터가 오랫동안 버스를 사용하지 못하는 기근 현상의 방지를 위한 방식
- 가변 우선순위 알고리즘
- 회전 우선순위
-
- 중재 동작이 끝날 때마다 모든 마스터들의 우선순위가 낮아지고, 가장 우선순위가 낮았던 마스터가 최상위 우선순위를 가지는 방법
-
- 버스 사용 승인을 받은 마스터는 최하위 우선순위를 가지며, 바로 다음에 위치한 마스터가 최상위 우선순위를 가지도록 하는 방법
-
- 임의 우선순위: 각 중재 동작이 끝날 때마다 마스터들의 우선순위가 난수 발생기에 의해 임의로 정해지는 방식
- 동등 우선순위: 모든 마스터들이 동등한 우선순위를 가지는 방식
- 최소-최근 사용: 최근 가장 오랫동안 버스를 사용하지 않은 버스 마스터에게 최상위 우선순위를 할당하는 방식
- 회전 우선순위
2-2. 직렬 중재 방식
버스요구 신호와 버스승인 신호가 하나씩 있으며, 각 신호 선이 모든 버스 마스터들 간에 직렬로 접속되는 방식
1) 중앙집중식 직렬 중재 방식
- 하나의 중재 신호선에 의해 모든 버스 마스터들이 직렬로 연결되어 데이지 체인형태를 이룸
- 마스터들의 우선순위는 버스 중재기를 시작점으로 하여 승인 신호 선이 연결된 순서대로 정해짐(중재기에 가까운 것이 높은 우선순위)
- 어떤 마스터도 버스를 사용하지 않을 때만 버스 중재기가 승인 신호를 발생하도록 설계해야 함
- BBUSY 신호가 해제될 때 까지는 버스 마스터들이 요구 신호를 보낼 수 없거나,
- 버스 요구 신호는 항상 발생시킬 수 있지만, 승인 신호를 받은 후에도 BBUSY 신호가 해제될 때까지는 버스를 사용할 수 없도록 함
2) 분산식 직렬 중재 방식
- 데이지-체인 버스 승인 신호(DBGNT) 선이 버스 중재기들을 순환형으로 접속한 형태로 구성
- 버스 사용권을 부여받은 마스터가 버스 사용을 시작하는 순간에 DBGNT 신호를 세트하여 자신의 바로 우측 마스터의 중재기로 보내줌
- 신호를 받은 중재기의 마스터가 버스 사용을 신청한 상태였으면 BGNT 신호를 발생시켜 마스터에게 보내며, 버스 요구를 하지 않은 상태라면 다음 중재기로 넘겨줌
- 각 마스터의 우선순위가 계속 변한다는 특징
- 즉, 어떤 마스터가 버스 사용 승인을 받으면 그 마스터는 다음 중재 동작에서는 최하위 우선순위를 가지게 되고, 그 마스터의 바로 우측에 위치한 마스터가 최상위 우선순위를 가지게 됨
- 이 방식은 분산식이지만, 어떤 한 중재기에 결함이 발생하면 DBGNT 신호를 통과시킬 수 없기에 전체 동작이 중단될 수 있음
2-3. 폴링 방식
버스 중재기가 각 마스터들이 버스 사용을 원하는지를 주기적으로 검사하여 버스 승인 여부를 결정
1) 하드웨어 폴링 방식
- 중재기 내의 고정된 하드웨어를 이용한 주기적 검사를 통해 중재 기능을 수행하는 방식
- N개의 마스터를 가진 시스템에는 N개의 폴링 선 혹은 2진 코드화된 폴링 주소를 사용할 시 logN개의 폴링 선 필요
- 각 마스터들의 우선순위는 중재기가 마스터를 검사하는 순서에 의해 결정됨
2) 소프트웨어 폴링 방식
- 하드웨어 폴링 방식과 동일하게 구성
- 그러나 중재 동작이 고정된 하드웨어에 의해 이루어지는 것이 아니라 프로세서의 의해 조정되는 방식
- 하드웨어 방식에 비하여 속도가 더 느리지만, 융통성이 높다는 장점
- 중재 프로세서는 다음에 폴링할 마스터의 주소를 기억할 수 있고, 필요에 따라 폴링 순서를 변경할 수도 있음
- 만약 어떤 버스 마스터에 결함이 발생한다면, 그 마스터를 폴링 순서에서 제외하여 시스템 결함 허용도를 높일 수 있음
3. 인터럽트를 이용한 I/O
프로그램을 이용한 I/O 방식은 CPU가 I/O 동작에 계속 관여해야 하기 때문에 CPU 시간의 낭비를 초래
- 인터럽트 메커니즘을 이용하여 CPU와 I/O 장치간 상호작용을 처리하는 인터럽트-구동 I/O 방식을 통해 해결 가능
- CPU가 I/O 제어기에 명령을 보냄. 그 후, CPU는 다른 작업 수행
- 제어기는 I/O 명령을 이용하여 I/O 장치를 제어
- I/O 장치가 명령 수행을 완료하면, 제어기는 CPU로 인터럽트 신호를 보냄
- CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 다음 작업을 계속함
3-1. 다중 인터럽트 방식
- 각 I/O 제어기와 CPU 상에 별도의 인터럽트 요구 신호선과 인터럽트 확인 신호선이 한 개씩 존재
- 두 개 이상의 I/O 장치들이 동시에 인터럽트 요구 신호를 보내는 경우, 각 I/O 장치에 대하여 우선순위를 정하고, 더 높은 우선순위를 가진 장치의 인터럽트 요구부터 확인 신호를 보내고 서비스
- 각 I/O 장치가 별도의 인터럽트 선을 가지고 있기 때문에 CPU가 인터럽트를 요구한 장치를 쉽게 찾아낼 수 있다는 장점
3-2. 데이지-체인 방식
- 모든 I/O 제어기들은 한 개의 인터럽트 요구 신호 선을 공유
- 인터럽트 확인 신호는 첫 번째 I/O 제어기로 보내짐
- 만약 그 제어기가 인터럽트를 요구한 상태라면, 즉시 데이터 버스를 통해 자신의 ID(인터럽트 벡터)를 CPU에 보냄
- 인터럽트를 요구한 상태가 아니라면, 그 제어기는 확인 신호를 다음 제어기로 통과시킴
- 간단한 하드웨어 구성이지만, 많은 수의 I/O 장치들이 접속된 시스템에서는 기근 현상 초래할 가능성 있음
3-3. 소프트웨어 폴링 방식
- 한 개의 TEST I/O 선이 CPU와 모든 제어기들 사이에 연결
- TEST I/O 신호는 각 제어지 내 인터럽트 플래그의 상태를 확인
- 데이지-체인 방식과 같은 방식으로 작동하지만 소프트웨어가 그 역할을 수행하는 것이 차이
4. DMA를 이용한 I/O
인터럽트-구동 I/O 방식 역시 기억장치와 I/O 장치간 데이터 이동에 CPU가 직접 개입해야 하며, 이동되는 데이터들이 반드시 CPU를 경유해야 하는 문제 존재
- DMA(Direct Memory Access)란 CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터 전송을 수행하는 메커니즘
- CPU는 DMA 제어기로 다음과 같은 정보들이 포함된 명령어를 보냄
- I/O 장치의 주소
- 연산 지정자
- 데이터가 읽혀지거나 쓰여질 주기억장치 영역의 시작 주소
- 전송될 데이터 단어들의 개수
- CPU는 I/O 동작을 DMA 제어기에게 맡기고, 모든 데이터 전송 동작이 완료될 때까지 전혀 개입하지 않음
- CPU와 DMA는 시스템 버스를 공유: DMA가 시스템 버스를 통해 주기억장치에 접근하기 때문
- DMA 제어기는 가능한 한 CPU의 정상적 동작을 방해하지 않으며 시스템 버스를 사용
- 이로 인해 DMA를 사이클 스틸링이라고도 부름
- 그러나 큰 데이터 블록 전송의 경우 스틸한 사이클만 사용하기에는 턱없이 부족
- 일반적으로 DMA 제어기가 시스템 버스 사용(BUS REQ)을 요구하면, CPU는 현재 사이클이 끝나는 즉시 사용 허가(BUS GRANT)를 해줌
- DMA 제어기의 내부 구조
- I/O 장치의 주소를 저장하는 '주소 레지스터'
- 데이터 버퍼 역할을 하는 '데이터 레지스터'
- 전솔될 데이터 수를 저장하는 '카운터 레지스터'
- 각종 제어 신호들을 발생하거나 받아들이기 위한 '제어 회로'
- 시스템 버스에 주기억장치, I/O 제어기가 모두 달려있는 경우, 데이터 x 2번만큼 시스템 버스를 사용 -> 비효율
- DMA 제어기 아래에 I/O 제어기를 두자 !
- 시스템 버스는 데이터 x 1번 만큼만 사용하면 됨
- 그러나, 각 DMA 제어기에 직접 접속할 수 있는 I/O 제어기의 수가 제한되어 여러 DMA 제어기들을 두어야 할 수도 있음
- DMA 제어기를 시스템 버스와 I/O 버스 사이에 위치시키고, I/O버스를 통해 I/O 장치를 제어하자!
- I/O 장치들은 종류와 속도가 다양하고 제어 방법도 복잡하기 때문에, 간단한 구조를 가진 DMA제어기로 지원하는 데 한계 존재
- 디스크 쓰기/읽기의 경우 데이터 블록의 크기가 512byte 이상이기 때문에 그 데이터들을 임시 저장하기 위한 내부 기억 장치 필요
I/O 장치들의 동작을 제어하며 DMA 동작도 제어하는 프로세서인 I/O 프로세서(IOP)의 사용
- I/O 제어 프로그램을 수행할 수 있는 프로세서
- 데이터 블록을 임시 저장할 수 있는 용량의 지역 기억장치
- 시스템 버스 인터페이스 및 버스 마스터 회로
- I/O 버스 인터페이스 및 중재 회로로 구성
'Software Convergence > Computer Architecture' 카테고리의 다른 글
폰 노이만 아키텍쳐 (0) | 2018.09.09 |
---|---|
기억장치 (0) | 2018.09.08 |
CPU의 구조와 기능 (0) | 2018.09.08 |