특징
장점
단점
구조
특징
구분
- 이전 포스팅 "컴퓨터 구성 요소 간 통신" 에서 다뤘던 내용이다! 잠깐 복습해보자.
쓰기 동작의 순서
① 버스 마스터가 버스 사용권 획득한 다음
② 버스를 통해 주소, 데이터, 쓰기 신호 전송
* 버스 마스터 : 버스를 직접 제어, 버스를 쓰고 있는 주체
버스에는 여러 개의 버스 마스터가 존재하지만, 어떤 한 순간에는 하나의 마스터만 장악하여 사용한다.
읽기 동작의 순서
① 버스 마스터가 버스 사용권 획득한 다음
② 주소와 읽기 신호를 전송하고, 데이터 수신 대기
사이클들은 타이밍에 의해 분류가 된다.
비동기식 버스
동일한 시간이 아닌, 다른 버스의 동작 발생 여부에 따라 눈치 보면서 실행
MSYN(마스터 동기신호), SSYN(슬레이브 동기신호)라는 정보가 필요하다.
① CPU가 버스에서 읽기 주소, 읽기 신호 띄어놓고, 신호 안정 시 마스터동기신호 내보냄
② 기억장치・입출력장치가 버스 상의 읽기 데이터 출력, 신호가 안정되면 슬레이브동기신호 내보냄
③ CPU가 데이터를 읽어오고 읽기가 완료되면 읽기 주소, 읽기 신호, 마스터동기신호 제거, 주소버스에 알려줌
④ 기억장치・입출력장치는 버스 상의 읽기 데이터, 슬레이브동기신호를 제거해 전송 완료
장점
단점
버스 중재가 왜 필요할까?
버스 마스터는 한 순간에 하나의 버스 마스터만 시스템 버스를 사용할 수 있기 때문이다!
제어 신호들의 연결 구조에 따른 중재 방식의 분류
병렬 중재방식 | 직렬 중재방식 | |
---|---|---|
특징 | 각 버스 마스터들이 독립적 버스 요구, 버스 승인 신호 발생하고, 버스 승인 신호를 받는다. 버스 마스터마다 Request(BREQ), Grant(BGNT) 선이 각각 존재한다. ( 버스 마스터들의 수 = BREQ 선 및 BGNT 선) 마스터마다 나 쓸래~ 어 너 써~ 하는 신호가 있다. | 버스 요구와 승인 신호 선이 각각 한 개씩만 존재하며, 각 신호 선을 버스 마스터들 간에 직렬로 접속하는 방식 |
버스 중재기의 위치에 따른 분류
중앙집중식 중재 방식 | 분산식 중재 방식 | |
---|---|---|
특징 | 중재기 개수 한 개 모든 버스 마스터들이 하나의 버스 중재기에 접속한다. | 중재기 개수 여러 개 모든 버스 마스터마다 중재기 존재한다. |
장점 | 분산식의 단점이 장점 | 중재 회로가 간단 -> 동작 속도가 빠름 어떤 중재기가 고장이 나더라도 해당 마스터에만 영향 -> 신뢰도가 높음 |
단점 | 분산식의 장점이 단점 | 고장을 일으킨 중재기를 찾아내는 방법이 복잡 한 중재기의 고장이 전체 시스템의 동작에 영향을 줄 수도 있음 |
우선순위의 결정 방식에 따른 분류
고정-우선순위 방식 | 가변-우선순위 방식 | |
---|---|---|
특징 | 각 버스 마스터에 지정된 우선순위가 고정되어 있는 방식 | 시스템의 상태에 따라 버스 마스터들의 우선순위를 변경할 수 있는 방식 |
장점 | 중재 회로 단순 | 모든 마스터들이 공평하게 버스 사용 가능 → Starvation 방지 |
단점 | Starvation 발생 | 중재 회로 복잡 |
종류 | 중앙집중식 - 병렬 | 분산식 - 병렬 |
---|---|---|
구성 | 모든 버스 마스터들이 하나의 버스 중재기에 접속된다. 중재기에 가까울수록 높은 우선순위를 가진다. (버스 마스터 1이 가장 높고, 버스 마스터 4가 가장 낮은 우선순위) | 모든 버스 마스터마다 중재기를 한 개씩 갖는다. |
동작 원리 | ① 여러개의 버스 요구 신호를 받은 후, 우선순위가 가장 높은 버스 마스터에게 BGNT 신호를 세트해준다. ② 그 후 BGNT 신호를 받는 마스터는 BBUSY 신호가 세트되어있는 동안에는 기다렸다가, 해제되는 순간 버스 사용을 시작한다. ③ 그 마스터는 버스 사용을 시작하는 순간 BBUSY 신호를 세트하여 다른 마스터가 버스를 사용하지 못하게 막는다. | 각 중재기가 자신보다 우선순위가 높은 마스터들의 BBUSY 신호를 검사하여 없다면 본인이 BGNT 신호를 세트하여 버스를 사용한다. |
예시 | Request(BREQ)신호를 1번, 2번, 3번, 4번 버스 마스터에서 각각 보내면 버스 중재기에 정해진 중재 원칙에 따라 중재기가 한 개만 허용(BGNT)해준다. | 첫 번째 마스터는 BREQ한다음 바로 BGNT 받아 실행하면 된다. 두 번째 마스터는 1번 마스터의 BREQ의 값을 받아와 연산하고 수행 세 번째, 네 번째 마스터도 마찬가지! |
종류 | 회전 우선 순위 | 동등 우선 순위 | 최소 최근 사용 |
---|---|---|---|
구성 | 버스 사용 승인을 받은 마스터는 최하위 우선순위, 다음 마스터가 최상위 우선순위를 갖는다. | 모든 마스터가 동등한 우선순위를 갖는다. FIFO알고리즘을 사용하여 먼저 요청한 거부터 grant해준다. | 오랫동안 버스 사용을 보내지 않은 버스 마스터 순으로 우선순위 할당한다. |
예시 | 마스터 6의 요구가 승인된 후 -> 최저 우선순위를 갖게 된다. | - | - |
종류 | 중앙집중식 - 직렬 | 분산식 - 직렬 |
---|---|---|
구성 | ① 하나의 중재 신호선(BGNT)이 모든 마스터들을 직렬로 연결(Daisy-Chain)하여 접속한다. ② BGNT가 연결된 순서로 우선순위를 결정한다. | 데이지-체인 버스 승인 신호인 DBGNT가 순환형(circular)으로 접속된 형태를 이룬다. |
동작 원리 | ① 한 개 이상의 마스터에서 버스 사용을 요구하면 공통의 BREQ 신호가 세트된다. ② 버스 중재기는 데이지체인의 첫 번째 마스터로 BGNT를 전송한다. ③ 첫 번째 마스터가 요청 신호를 보냈으면 BBUSY 신호를 세트하고, 아니면 다음 버스 마스터로 BGNT 신호를 넘겨준다. 이런 식으로 버스 사용을 요구한 마스터를 찾아다닌다. | ① 버스 사용권을 부여 받은 마스터가 버스 사용을 시작하는 순간에 (그 마스터의 중재기는) 자신의 우측에 위치한 마스터의 중재기로 접속된 DBGNT 신호를 세트한다. ② 만약 그 마스터가 버스 사용을 신청하고 기다리던 중이었다면, 중재기는 즉시 DBGNT 신호를 받아들여서 BGNT 신호를 발생시켜 마스터로 전송한다. ③ DBGNT 신호를 받은 마스터가 버스 요구를 하지 않은 상태라면, 그 신호를 우측의 다음 중재기로 통과시키고, 버스를 요구한 마스터를 찾아 낼 때까지 반복한다.(너가 요청했니? 계속 물어보면서 찾음) |
종류 | 하드웨어 폴링 방식 | 소프트웨어 폴링 방식 |
---|---|---|
구성 | 버스 중재기와 각 버스 마스터 간의 폴링 선이 존재한다. (공통 BREQ, BBUSY선이 한 개씩 존재) 폴링순서ㆍ중재 동작이 중재기 내부에 H/W로 고정되어있다. | 폴링 순서와 과정이 하드웨어에 내장되어있지 않는 폴링 방식을 말한다. |
동작 원리 | ① 중재기는 폴링 주소를 발생하여 검사할 마스터를 지정한 다음에, 그 마스터가 버스 사용을 원하는지 묻는다. ② 지정된 마스터가 버스 사용을 원하면 BGEQ 신호를 세트한다. ③ BREQ 신호가 세트되면, 중재기는 현재 검사중인 버스 마스터에게 버스 사용을 허가하고, 그렇지 않으면 다음 마스터들에 대한 검사를 순서대로 진행한다. | 장점 : 폴링 순서(우선순위)변경이 용이하다. 단점 : 프로그램을 실행해야 하므로 하드웨어 방식에 비하여 속도가 더 느리다. 이와 같은 장단점은 폴링 방식에만 국한되는 것이 아닌, H/W와 S/W의 차이이다. |
과정 | ① 중재기는 폴링 주소를 발생하여 검사할 마스터를 지정한 다음에, 그 마스터가 버스 사용을 원하는지 묻는다. ② 지정된 마스터가 버스 사용을 원하면 BREQ 신호를 세트 ③ BREQ 신호가 세트되면, 중재기는 현재 검사중인 마스터에게 버스 사용을 허가하고, 그렇지 않으면(지정된 마스터가 버스 사용을 원하지 않으면) 다음 마스터들에 대한 검사를 순서대로 진행 마스터들에 대한 검사 순서는 정하기 나름이다. | - |
I/0 장치는 시스템 버스에 직접 접속되지 못하는 이유
=> 따라서 I/O 컨트롤러를 사용한다.
개념
인터럽트
구분 | 인터럽트 | 서브루틴 |
---|---|---|
개념 | 실행중인 프로그램을 잠시 중단하고 다른 프로그램을 먼저 실행하는 것 | 메인루틴에 대응되는 단어로, 프로그램 중의 하나 이상의 장소에서 필요할 때마다 반복해서 사용할 수 있는 부분적 프로그램 |
발생 과정 | 내ㆍ외부 신호에 의해 발생 | 프로그램 명령 실행 과정에서 발생 |
분기 주소의 결정 | 하드웨어의 의해 결정 | 소프트웨어에 의해 결정 (명령어 주소 필드에 의하여 결정) |
저장 값 | 인터럽트 발생 전의 레지스터 내용, PC 값 등 CPU 상태에 관한 모든 정보 저장 | PC값만 저장 |