1. CPU 칩과 시스템 버스
• 시스템 버스(system bus): CPU와 메모리, 입출력 장치 간 정보를 교환하는 통로
• 시스템 버스는 CPU 칩에 있는 다양한 핀과 연결
(1) CPU 칩
• CPU 칩에는 통신에 필요한 핀들이 있는데 입력이나 출력 중 하나만 가능한 핀도 있고, 입출 력이 모두 가능한 핀도 있다.
• 핀을 유형별로 묶어 버스라고 하며, 메모리와 입출력 장치에서 해당되는 각 핀에 연결된다.
• CPU 핀은 주소, 데이터, 제어 세 가지 유형으로 나눌 수 있다.
• 명령 인출 시 처리 과정
1. CPU는 해당 명령의 메모리 주소를 주소 버 스(핀)로 출력
2. 제어선을 설정하여 메모리에 워드를 읽으려 고 한다는 사실 통보
3. 메모리는 요청된 워드를 CPU의 데이터버스 로 출력
4. 완료되었다는 신호로 응답
5. CPU는 이 신호를 확인하고 해당 워드를 받 아들이는 명령 수행
※ 버스의 크기 : CPU의 성능 결정
❖ 주소 핀의 수(주소 버스 크기)
• 주소 핀의 수가 m개이면 메모리 주소를 최대 2m개 지정 가능
❖ 데이터 핀의 수 • 핀의 수가 n개이면 명령 한 번으로 n비트 워드를 읽거나 쓸 수 있음
• 32비트 워드 CPU의 데이터 핀이 16개라면, 1워드를 읽기 위해 2번 읽어야 함
• 데이터 핀이 32개라면 한번에 읽을 수 있으므로 훨씬 빠르지만 비용이 많이 듦
❖ 인터럽트 핀
• I/O 장치에서 CPU 쪽으로 연결하는 입력 핀
• I/O가 완료되면 I/O 제어기는 CPU에 인터럽트 신호를 보내 I/O 장치를 처리
• 일부 CPU에는 인터럽트를 수신했다는 신호(acknowledge)를 I/O 장치로 보내는 핀 보유
❖ 버스 중재 핀
• 장치 2개가 동시에 버스를 사용하지 못하도록 버스에서 트래픽을 조절
• CPU도 하나의 장치이므로 버스를 사용하려면 버스 요구를 해야 함
❖기타 핀
• 일부 CPU 칩은 수치 프로세서, GPU, 통신 프로세서 등 보조 프로세서 연결하는 특수 핀 제공
• 상태 정보의 입출
(2) 시스템 버스
• 시스템 버스 : 중앙 처리 장치와 기억 장치 및 입출력 장치 사이에 정보를 교환하는 통로
- CPU와 메모리 사이를 연결하는 지정된 버스
- I/O 장치 연결에 필요한 하나 이상의 버스
• 프로그램에서 정해진 순서에 따라 실행되도록 각종 제어 신호 발생
❖ 일반적인 버스 구조
• 버스 : 굵은 선으로 표시
• 비트 수 : / 사선으로 선위에 표시
❖ 버스 프로토콜
• 다른 보드를 연결할 때 외부 버스가 어떻게 작동되는지 정의
• 타사에서 제작된 보드를 인터페이스 슬롯 연결
- 마더보드의 커넥터와 기계적으로 그리고 전압, 타이밍 등 일치해야 함
• PCI(peripheral component interconnect) 버스 : 컴퓨터 메인보드에 주변기기를 장착하는 데 쓰이는 컴퓨터 버스
• SCSI(Small Computer System Interface) : 소형 컴퓨터를 위한 주변기기 연결에 쓰이는 인터 페이스 표준
❖ 버스 동작
• 능동 장치를 마스터(master), 수동 장치를 슬레이브(slave)
• 경우에 따라 마스터 혹은 슬레이브로 동작
• 메모리는 마스터가 될 수 없음
※ 버스 타이밍(Bus timing)
❖ 동기식 버스(Synchronous bus)
• 모든 장치가 고정된 클록 속도로 연결
- 일반적으로 5MHz와 133MHz 사이의 주파수를 갖는 구형파
• 비동기식 방식보다 유연성이 떨어짐
❖ 비동기식 버스(Asynchronous bus)
• 버스 클록이 없고 버스를 동작시키는 신호 발생이 그 다음 동작으로 이어짐
• 여러 종류의 기술들을, 느린 장치와 빠른 장치를 혼합해서 사용 가능
(3) 버스 중재
❖ 버스 충돌
• 2개 이상의 장치가 동시에 버스를 사용하기 원할 때 발생
❖ 버스 중재 • 장치 하나가 다른 장치로 데이터를 보내고자 할 때
➊ 버스 중재기에서 버스의 사용 승인을 받고
➋ 버스를 통해 데이터를 전송
❖ 버스 중재 기법
❖ 병렬 버스 중재 방식
• 병렬 중재기의 우선순위를 결정하는 방법은 다양
- 고정식
- LRU(Least Recently Used: 최소 최근 사용)
- FIFO
- 임의 방식
- 라운드-로빈 등
❖ 직렬 버스 중재 방식(데이지 체인)
• 중재기에 연결된 순서에 따라 우선순서 결정
• 모든 마스터가 버스 요구선 하나를 이용하므로 간단하고 저렴
• 얼마나 많은 장치가 버스 요구를 했는지 알 수 없음
❖ 폴링 버스 중재 방식
• 연결된 버스 마스터의 주소를 발생하여 각 마스터에 버스를 사용할지 확인
• 버스 마스터의 응답에 따라 버스 승인을 하고 버스가 사용 중임을 설정
❖ 분산 버스 중재 방식
• 버스 마스터들에 각각 별도의 버스 중재기가 존재
• 버스 중재기 회로가 간단하여 동작속도 빠름
• 하나라도 고장나면 성능에 영향을 미침
(4) 인터럽트 I/O
• 여러 장치가 동시에 인터럽트를 발생시킬 수 있으므로 버스와 같은 중재 문제 발생
• 각 장치에 우선순위를 지정하고 중앙 집중식 인터럽트 제어기가 중요한 장치 순서에 따라 우선순위를 부여
❖ 표준 인터럽트 인터페이스
• 인텔 프로세서 기반 PC는 8259A 인터럽트 제어기 칩 사용
2. 버스의 실제 동작 예
❖ USB (Universal Serial Bus)
• 새로운 장치를 설치할 때의 문제점을 해결하는 표준 버스 규약의 필요로 등장
❖ USB 프로젝트의 초기 목표
➊ 보드나 장치에 스위치나 점퍼를 설정할 필요가 없다.
➋ 새로운 입출력 장치를 설치하기 위해 케이스를 열지 않아도 된다.
➌ 모든 장치를 연결하는 데 한 종류의 케이블만 있어야 한다.
➍ 입출력 장치는 케이블에서 전원을 공급받아야 한다.
➎ 컴퓨터 하나에 장치를 최대 127개 부착할 수 있어야 한다.
➏ 시스템은 실시간 장치(예: 사운드, 전화)를 지원해야 한다.
➐ 컴퓨터를 실행하는 동안 장치를 설치할 수 있어야 한다.
➑ 새 장치를 설치한 후 재부팅할 필요가 없다.
➒ 새로운 버스 및 입출력 장치는 제조 비용이 저렴해야 한다
3. 입출력 장치 인터페이스
(1) 인터페이스 장치의 필요성- CPU와 각 주변 장치 사이에 존재하는 차이 해결
➊ 주변 장치는 전자-기계 장치 또는 전자-자기 장치가 결합된 것
• CPU 및 메모리는 전자 장치이므로 신호 값의 변환 필요
➋ 주변 장치의 데이터 전송 속도는 일반적으로 CPU의 전송 속도보다 느림
• 동기화 방법 필요
➌ 주변 기기의 데이터 코드 및 형식은 CPU 및 메모리의 워드 형식과 다름
• 형식 변환 필요
❖ 주변 장치와 데이터 전송 방법
➊ 프로그램 입출력(programmed I/O)- 프로세서가 컴퓨터 프로그램으로 직접 입출력 제어
• 장치의 상태 확인, 입출력 명령 전송, 데이터 전송 등을 모두 CPU가 직접 처리
➋ 인터럽트 입출력(interrupted I/O)
➌ 직접 메모리 액세스(Direct Memory Access, DMA)
(2) 프로그램 입출력
❖ 프로그램 입출력 동작
1. 프로세서가 프로그램을 실행하다가 IO 연산과 관련된 명령을 만남
2. 적절한 입출력 모듈에 명령 발송
3. 입출력 모듈이 명령에 기반하여 요구 동작을 실행하고 IO 상태를 설정
4. 프로세서는 입출력 연산이 마칠때까지 입출력 모듈의 상태를 확인
→ CPU가 IO모듈에 명령을 발생하면 그 연산이 끝날 때까지 기다려야 함(시간 낭비)
❖ CPU는 시스템 버스를 통해 입출력 장치와 통신 • 시스템 버스 할당 방법
➊ 분리 입출력(Isolated I/O) : 별도의 제어 버스를 사용
➋ 메모리 사상 입출력(Memory Mapped I/O) : 입출력 장치와 메모리가 버스를 공동으로 사용
❖ 분리 입출력(Isolated I/O)
• 입출력을 위한 별도의 읽기 및 쓰기 제어선 있음
• 메모리 주소와 입출력의 주소(포트) 공간 분리
• 별도의 입출력 명령어와 메모리 명령어
❖ 메모리 사상 입출력(Memory mapped I/O)
• 모든 버스가 공통으로 사용
• 메모리 및 입출력에 동일한 명령어 세트
• 메모리 공간을 나누어 사용
(3) 인터럽트 I/O
• 입출력 연산 동안 CPU가 계속 모니터링하는 대신, 장치가 컴퓨터로 인터럽트 요청 신호로 알림
– 그 동안 CPU는 다른 프로그램 실행
• 외부 인터럽트 신호 감지: CPU는 현재 수행 중인 작업을 잠시 중단
→ 서비스 프로그램으로 분기하여 I/O 전송을 처리
→ 원래 수행하던 작업으로 복귀
• 프로그램 I/O 방식의 CPU 시간 낭비를 보완
• 프로그램 I/O와 인터럽트 I/O 모두 메모리와 I/O 모듈 간에 데이터를 전송하기 위해 프로세 서가 능동적으로 개입함(모든 데이터 전송은 프로세서를 통과)
(4) DMA(Direct Memory Access)
• CPU가 개입하지 않고 주변 장치와 메모리가 직접 통신하여 데이터 전송
• DMA 동안 CPU는 메모리 버스를 제어하지 못하고 DMA 제어기(DMAC)가 버스 권한을 가짐
• 버스 요구(BRQ): DMAC가 버스 제어권을 CPU에 요청하는 데 사용
• 버스 승인(BGT) : CPU는 현재 명령의 실행을 끝낸 뒤 버스를 끊고 DMAC에게 버스 승인 신호
• DMAC가 버스 제어권을 갖고 I/O장치와 메모리간의 데이터 전송을 관리
❖ DMA 전송 종류
• 블록전송
• 사이클 스틸
• 인터리브 모드
❖ 블록 전송
• 블록 전송(burst transfer, block transfer) : 데이터 전송이 완전히 끝난 후 버스 반환
• 전송할 데이터의 바이트 개수를 레지스터에 저장하고, 한 바이트씩 전송될 때마다 감소하여 0이 되면 DMAC는 버스 해제
• 실행 단계
➊ 버스 승인 요청
➋ 장치의 전송 속도로 전체 데이터 블록 전송
➌ 버스의 제어권을 CPU에게 반환
❖ 사이클 스틸(cyclic steal)
• DMAC는 CPU로부터한사이클을훔쳐한 바이트를 전송하고 버스 제어권을 CPU에 반환
• CPU는DMA I/O 전송이메모리사이클하나를‘훔칠’수있도록한메모리사이클동안작업지연
• 실행 단계
➊ 한 바이트를 버퍼에 버퍼링
➋ CPU에 버스 승인 요청
➌ 메모리와 IO장치 사이에 바이트 전송
➍ 버스 제어권을 다시 CPU로 반환
❖ 인터리브 모드(interleaved mode)
• CPU 가 시스템 버스를 사용하지 않을 때 DMA 제어기가 시스템 버스 권한 가짐
• CPU가명령 디코딩중이거나 ALU 연산을 수행할 때 버스를 사용하지 않는다.
- 인터럽트 DMA라고도 함
- 마이크로프로세서를 중지하지 않고 데이터 전송 가능
- 데이터 전송은 명령어 사이클당 1바이트
(5) 버스 설계의 목표
• 버스 설계의 중요한 목표 : 성능, 표준, 가격
• 표준 : 다양한 장치를 취급할 수 있도록 유연성을 제공
• 메모리 버스 : 성능이 우선이며, 그 다음이 가격
• I/O 버스 : 표준화가 우선이며, 그 다음이 성능
'CS > 컴퓨터구조' 카테고리의 다른 글
[Chapter 9] 인터럽트 (0) | 2023.06.02 |
---|---|
[Chapter 7] 04 SSD (0) | 2023.06.01 |
[Chapter 7] 03 RAID (0) | 2023.06.01 |
[Chapter 7] 02 광 기억 장치 (0) | 2023.06.01 |
[Chapter 7] 01 자기 디스크 (0) | 2023.06.01 |