입출력구조 - 시스템 BUS 구성 및 제어
Last updated
Last updated
패스트캠퍼스에서 컴퓨터 구조 강의 를 듣고 스스로 공부한 내용을 정리하고 있습니다.
우리가 사용하고 있는 디지털 컴퓨터는 결국 많은 레지스터로 구성되어있고(컴퓨터 = 조합논리회로 + 순서논리회로), 이들 사이를 연결하여 정보를 전송하기 위해서 경로를 가져야 한다.
그렇다고 해서 모든 레지스터들을 일일히 연결시키기에는 너무 번거롭기 때문에 공통의 버스 시스템이라는 효율적인 방법을 사용한다.
bus 버스 : 한번에 하나의 전송만이 이루어지도록 제어신호를 이용하여 해당 레지스터를 선별
CPU 는 외부 주변장치(입출력장치) 및 통신의 주체로서 정보의 입출력을 담당하고 있는데 이때도 BUS 를 이용하여 효율적으로 이를 처리할 수 있다.
BUS Adapter : 입출력버스를 시스템 버스 라인에 연결
입출력 제어기 (I/O Controller : 입출력 인터페이스) : 입출력 속도 및 유사한 동작 특성 단위로 입출력 장치들을 제어 관리 하는 장치
컴퓨터 시스템 내부에는 각 요소들 사이의 정보 전송을 위해서 다양한 단계의 버스가 존재한다.
CPU 내부에서도 레지스터 - ALU 사이의 정보전송을 위한 여러 내부 버스가 존재
메모리 버스 : 데이터, 주소, 읽기/쓰기 정보를 전송
I/O 버스 : 입출력 장치로 정보를 주고 받는데 사용
공유 메모리 멀티 프로세서 시스템에서 프로세서는 시스템 버스를 통해서 공유자원에 대한 접근을 요구한다.
공유자원이 사용되고 있을 때 : 바로 사용 승인됨
공유자원이 사용되고 있지 않을 때 : 선점 프로세스의 종료까지 대기상태를 유지한다.
동시에 시스템 버스를 요구하는 경우 : 공유자원에 대한 충돌을 해결하기 위해서 중재 동작이 수행됨
의문) 중개 동작을 어떻게 할것인가?
컴퓨터의 시스템 버스는 IEEE 표준 796 에 따라서 제어되고 있다. 그 요소를 하나씩 살펴보자.
우선 아래와 같은 세 분류로 나누어 생각해볼 수 있겠다.
데이터 라인
주소 라인
제어 라인
데이터라인은 프로세스와 공통 메모리 사이에서 데이터 전송경로를 제공한다.
16 - 32 라인이 가장 일반적이고
양방향 정보 전송이 가능하다.
데이터 전송모드로는 동기와 비동기 두가지가 있다.
동기
source & target 장치간 공통 clock 에 의해 정해진 시 분할 동안 데이터가 전송된다.
공통의 클럭에 의해 동작하므로 모든 장치가 일관된 신호를 받는다.
비동기
각 장치들을 독립적 클럭으로 동기화 한다.
source & target 장치 간에 handshaking 제어 신호헤 의해서 각 데이터를 전송한다.
메모리 주소와 입출력포트 식별에 활용한다.
단방향 정보 전송이 가능하다.
장치들 간의 정보 전송을 제어하는 신호를 제공한다.
timing signal : 데이터와 주소 정보의 유효성을 체크
command line : 수행할 동작을 지정한다.
전송신호 : 메모리 읽기와 쓰기
위의 그림에서 Data Transfer 의 상단을 참고
메모리 및 I/O를 모두 포함
주소 라인은 독립된 메모리와 I/O 공간 지정을 위해 활용
전송 승낙
위의 그림에서 transfer acknowledge 참고
전송이 완료되었음을 알리는데 사용된다.
인터럽트 요구
그림에서는 interrupt control 참고
8개의 인터럽트 요구 명령과 1개의 승낙 명령으로 구성됨
우선순위 인터럽트 제어기에 연결되어 활용됨
버스 제어 신호
상단 그림에서 Miscellaneous control 참고
버스 요구 및 버스 승인 등 담당
bus lock : 멀티 프로세서 응용에서 검사와 설정이 실행되는 동안 다른 프로세서가 버스를 계속 잡고 있지 못하도록 막아줌
중재 절차를 위한 신호
상단 그림에서 Bus arbitration 참고
하나의 자원을 두개 이상에서 접근할 때 중재 처리
직렬중재
시스템 버스 제어기 : 중재를 위한 논리 회로 내장
우선순위를 바탕으로 Daisy-chain 연결로 중재하는 방법
가장 높은 중재자의 PI는 항상 1이고 PO는 0이다.
해당 중재자가 버스 사용을 원치 않는다면 PO = 0 -> 1 이 되어서 다음 중재자로 전송됨
bus busy line 활용하기
사용중인 버스를 특정 중재자가 할당받고자 할 경우 활용되는 기법
해당 중재자는 bus 신청 전, bus busy line 의 상태를 확인한다.
bus busy line 비활성상태 : 해당 프로세서는 버스 라인을 할당받고 -> bus busy line 을 활성상태로 변경시킨다.
병렬중재
Output IST 가 1일때 정보전송, 0일때 미전송
우선순위가 없고 각각 따로따로 존재
각각의 버스 중재자는 버스 요청 출력라인인 req 와 버스 승락 입력 라인 ack 를 보유한다.
버스 비지 라인은 daisy-chain 의 경우와 동일하다.
BPRN 버스 우선순위 입력 & BPRO 버스 우선순위 출력
버스 중재 회로의 데이지 체인 연결에 활용한다.
busy 버스 혼잡 신호 : 버스가 사용중임을 모든 중재자에게 알리는 open collector 출력
CBRQ 공통버스 요구 : open collector 출력, 우선순위가 낮은 중재자가 현재 버스 사용중
각각의 ack 와 req 에 BREQ 버스요구, BPRN 우선순위입력 을 연결해야한다
BCLK 버스 클럭은 모든 버스 작업의 동기화에 활용된다.