시스템 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(버스 클럭)은 모든 버스 작업의 동기화에 활용
출처 : 제로베이스
'공부 Note > 컴퓨터 구조' 카테고리의 다른 글
Chapter 06 입출력 구조 (3) (0) | 2022.02.24 |
---|---|
Chapter 06 입출력 구조 (2) (0) | 2022.02.24 |
Chapter 05 메모리 구조 (4) (0) | 2022.02.24 |
Chapter 05 메모리 구조 (3) (0) | 2022.02.24 |
Chapter 05 메모리 구조 (2) (0) | 2022.02.24 |