공부 Note/컴퓨터 구조

Chapter 06 입출력 구조 (1)

AmyG 2022. 2. 24. 10:47

시스템 BUS 구성 제어

   * 시스템 버스의 필요성

   * 시스템 버스의 제어

   * 시스템 버스의 활용

 

시스템 버스의 필요성

   * 버스와 메모리 전송

      - 전형적인 디지털 컴퓨터는 많은 레지스터와 레지스터들 사이의 정보 전송을 위한 경로를 가져야 한다. 시스템은 이를 위해 레지스터들 사이를 연결하는 번거로움 대신에 공통의 버스 (bus : 한번에 하나의 전송만이 이루어지도록 제어 신호를 이용하여 해당 레지스터를 선별)시스템이라는 효율적인 방법을 사용한다

      - 또한 CPU 행하는 중요한 기능 중 하나는 외부 주변 장치(입출력 장치) 통신(network) 주체로서 정보의 입출력을 관장하는 일이다.

         > Bus Adapter -> 입출력 버스를 시스템 버스 라인에 연결

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

 

   * 시스템 버스와 I/O 버스

시스템 버스의 제어

   * 시스템 버스와 I/O 버스 상호 중재

      - 컴퓨터 시스템에는 요소들 사이의 정보 전송을 위한 다양한 단계의 여러 버스가 존재 (CPU내에서도 레지스터와 ALU사이의 정보 전송을 위한 여러 내부 버스 존재)한다

         > 메모리 버스 -> 데이터, 주소, 그리고 읽기/쓰기 정보 전송

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

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

         > 공유자원이 사용되고 있지 않을 경우 -> 바로 사용 승인

         > 공유자원이 사용되고 있을 경우 -> 선점 프로세스의 종료까지 대기상태 유지

         > 동시에 시스템 버스를 요구하는 경우 -> 공유자원에 대한 충돌을 해결하기 위한 중재(arbitration)동작이 수행되어야 한다

      - IEEE 표준 796다중 버스 신호

         > 파란 라인 : 제어라인 (Control line) 26

 

   * 데이터 라인 -> 프로세스와 공통 메모리 사이의 데이터 전송 경로 제공 (16 - 32 line 가장 일반적, 방향 정보 전송)

      - 데이터 전송 모드

         > 동기 : source & target 장치간 공통 clock구동에 의해 정해진 분할 동안 데이터가 전송 된다

         > 비동기 : 장치들을 독립적 클럭으로 동기화, source & target 장치간 핸드 셰이킹(hand shaking) 제어신호에 의해 데이터를 전송한다

   * 주소라인 -> 메모리 주소와 입출력 포트 식별에 활용 ( 방향 정보 전송)

   * 제어라인 -> 장치들 간의 정보 전송을 제어하는 신호를 제공

      - Timing signal : 데이터와 주소 정보의 유효성 체크 

      - Command line : 수행할 동작을 지정

      - 전송 신호 : 메모리 읽기와 쓰기 (ex, 메모리 I/O 모두를 포함, 주소 라인은 독립된 메모리와 I/O 공간의 지정을 위해 활용)

      - 전송의 승낙 (acknowledge) (ex, 전송이 완료되었음을 알리는데 사용된다)

      - 인터럽트 요구 (ex, 8개의 인터럽트 요구 명령과 1개의 승낙 명령으로 구성, 우선순위 인터럽트 제어기에 연결되어 활용됨)

      - 버스 제어 신호 : 버스 요구 버스 승인(grant) (ex, bus lock -> 멀티 프로세서 응용에서 검사와 설정이 실행되는 동안 다른 프로세서가 버스를 계속 잡고 있지 못하도록 막아준다)

      - 중재 절차를 위한 신호등으로 구성

 

시스템 버스의 활용

   * 직렬 중재 절차 (시스템 버스 제어기 : 중재를 위한 논리 회로 내장)

      - 우선 순위를 바탕으로 Daisy-chain연결로 중재 하는 방법 제시

      - 가장 높은 중재자의 PI 항상 1(버스 신청 항상 할당)이고 PO 0이다

         > 만약 해당 중재자가 버스의 사용을 원치 않는다면 해장 중재자의 PI=0, PO=1 되어 다음 중재자로 전송 된다

         > Bus busy line 활용 -> 상용중이 버스를 특정 중재자가 할당 받고자 경우 활용되는 기법이다

         > 해당 중재자 (PI=1이고 PO=0 할당 받은 경우) bus 신청 Bus busy line 상태를 확인한다

         > Bus busy line 활성 상태 : 해당 프로세서는 버스 라인을 할당 받고 -> Bus busy line 활성 상태로 변경 시킨다

      - 가장 높은 중재자의 PI 항상 1 (버스 신청 항상 할당)이고 PO 0이다

         > Bus busy line 활용

         > Bus busy line 활성 상태 : 이는 낮은 우선 순위의 프로세서가 버스를 사용하고 있다는 의미이다. 프로세서가 버스 사용을 완료하고 비지 라인을 비활성 상태로 전환할 까지 대기해야 한다

   * 병렬 중재 논리 

      - 버스 중재자는 버스 요청 출력 라인 (Req) 버스 승락(Ack)입력 라인 보유

      - 버스 비지 라인은 Daisy-chain 경우와 동일

      [ IEEE 표준 796 다중 버스 신호 ]

      - BPRN(버스 우선 순위 입력) & BPRO(버스 우선 순위 출력) -> 버스 중재 회로의 데이지체인 연결에 활용

      - Busy (버스 혼잡 신호) -> 버스가 사용중임을 모든 중재자에게 알리는 open collector 출력임

      - CBRQ (공통버스 요구) -> open collector 출력, 우선 순위가 낮은 중재자가 현재 버스 사용

      - 각각의 acknowledge request BREQ(버스 요구) & BPRN(우서 순위 입력) 연결해야 , BCLK(버스 클럭) 모든 버스 작업의 동기화에 활용

 

출처 : 제로베이스