입출력구조 - 시스템 BUS 구성 및 제어

패스트캠퍼스에서 컴퓨터 구조 강의 를 듣고 스스로 공부한 내용을 정리하고 있습니다.

필요성

  • 우리가 사용하고 있는 디지털 컴퓨터는 결국 많은 레지스터로 구성되어있고(컴퓨터 = 조합논리회로 + 순서논리회로), 이들 사이를 연결하여 정보를 전송하기 위해서 경로를 가져야 한다.

  • 그렇다고 해서 모든 레지스터들을 일일히 연결시키기에는 너무 번거롭기 때문에 공통의 버스 시스템이라는 효율적인 방법을 사용한다.

    • bus 버스 : 한번에 하나의 전송만이 이루어지도록 제어신호를 이용하여 해당 레지스터를 선별

  • CPU 는 외부 주변장치(입출력장치) 및 통신의 주체로서 정보의 입출력을 담당하고 있는데 이때도 BUS 를 이용하여 효율적으로 이를 처리할 수 있다.

    • BUS Adapter : 입출력버스를 시스템 버스 라인에 연결

    • 입출력 제어기 (I/O Controller : 입출력 인터페이스) : 입출력 속도 및 유사한 동작 특성 단위로 입출력 장치들을 제어 관리 하는 장치

제어

  • 컴퓨터 시스템 내부에는 각 요소들 사이의 정보 전송을 위해서 다양한 단계의 버스가 존재한다.

    • CPU 내부에서도 레지스터 - ALU 사이의 정보전송을 위한 여러 내부 버스가 존재

    • 메모리 버스 : 데이터, 주소, 읽기/쓰기 정보를 전송

    • I/O 버스 : 입출력 장치로 정보를 주고 받는데 사용

  • 공유 메모리 멀티 프로세서 시스템에서 프로세서는 시스템 버스를 통해서 공유자원에 대한 접근을 요구한다.

    • 공유자원이 사용되고 있을 때 : 바로 사용 승인됨

    • 공유자원이 사용되고 있지 않을 때 : 선점 프로세스의 종료까지 대기상태를 유지한다.

    • 동시에 시스템 버스를 요구하는 경우 : 공유자원에 대한 충돌을 해결하기 위해서 중재 동작이 수행됨

      • 의문) 중개 동작을 어떻게 할것인가?

IEEE 표준 796 다중 버스 신호

컴퓨터의 시스템 버스는 IEEE 표준 796 에 따라서 제어되고 있다. 그 요소를 하나씩 살펴보자.

우선 아래와 같은 세 분류로 나누어 생각해볼 수 있겠다.

  1. 데이터 라인

  2. 주소 라인

  3. 제어 라인

데이터라인

  • 데이터라인은 프로세스와 공통 메모리 사이에서 데이터 전송경로를 제공한다.

  • 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 버스 클럭은 모든 버스 작업의 동기화에 활용된다.

Last updated