1. CPU칩과 시스템 버스
- 시스템 버스 : CPU와 기기 간 정보 교환 통로. cpu 칩의 다양한 핀과 연결.
1) cpu 칩
칩에는 핀들이 있고 입출력 가능여부가 다 다름
핀을 유형별로 묶어 버스라고 함
명령 인출 시 처리 과정
- 주소버스 - 명령의 메모리 주소 출력. 일방향
- 제어선 - 메모리에게 읽기용이다! 라고 알려줌 (양방향 애매)
- 데이터버스 - 메모리가 요청된 워드를 데이터버스로 출력 후, (양방향?)
- 완료 응답
- cpu가 응답을 받고 해당 워드를 받아들이는 명령 수행
버스의 크기는 cpu의 성능을 결정.
주소 핀 수 m개 = 주소 2^m개 지정 가능
데이터 핀 수 n개 = 명령 한번에 n비트 워드 읽기/쓰기 가능
ex) 32비트 워드의 cpu가 데이터 핀을 16개 갖고 있음 → 1워드 읽으려면 2번 읽어야 함
인터럽트 핀 : IO장치 → cpu 입력 핀
IO가 완료되면 cpu에 인터럽트 신호를 보내 IO장치를 처리함. 일부 cpu는 ack응답을 보내기도
버스 중재 핀 : 장치 2개가 동시에 버스를 사용하지 못하도록 트래픽 조절. cpu도 버스를 쓰려면 요구해야 함
기타 핀 …
2) 시스템 버스
cpu와 다른 장치를 잇는 정보 교환 통로
프로그램에서 정해진 순서에 따라 실행되도록 각종 제어 신호 발생
버스 프로토콜 : 다른 보드와 연결 시 외부버스 작동 방식 정의.
- PCI버스 : 메인보드에 주변기기 장착에 쓰이는 버스
- SCSI 스카시 : 소형컴퓨터 주변기기 연결 인터페이스 표준
버스 동작 : 능동/수동쪽 장치를 master/slave. 경우에 따라 달라짐.
**메모리는 master가 될 수 없음. IO장치는 DMA 시 가능(직접 메모리 접근)
버스 타이밍
- 동기식 버스 : 모든 장치가 고정된 클럭속도로 연결
- 비동기식 버스 : 버스를 동작시키는 신호 발생 → 그 다음 동작 시작
3) 버스 중재
- 버스 충돌 : 2개 이상의 장치가 동시에 버스 사용 원함
- 버스 중재 : 버스 중재기에서 사용승인 받은 후 → 버스 사용해 데이터 전송.
버스 중재 기법
- 병렬 버스 중재 방식 : 중재기가 우선순위를 정하는 방법은 다양함. 고정식 LRU, FIFO, 임의, 라운드로빈 ..
- 직렬 버스 중재 방식 (데이지 체인) : 중재기에 연결된 순서에 따라 우선순위. 모든 master가 버스 요구선 하나를 사용(저렴). 얼마자 많은 장치가 버스 요구를 했는지 알 수 x.(다 한 선으로 합쳐서 들어오니까)
- 폴링 버스 중재 방식 : 하나하나 버스 사용여부 확인
- 분산 버스 중재 방식 : master마다 버스 중재기 존재. 간단. 빠름. 하나라도 고장나면 영향있음. - ?
4) 인터럽트 IO
여러 장치가 동시에 인터럽트 발생 시 중재 문제.
장치에 우선순위 지정. 중앙 집중식 인터럽트 제어기가 중요한 순위 부여.
- 표준 인터럽트 인터페이스
2. 버스의 실제 동작 예
USB Universal Serial Bus : 새로운 장치 설치 시 표준 버스 규약 필요.
초기 목표들 … 입출력 장치는 케이블에서 전원을 공급받아야 한다.
3. 입출력장치 인터페이스
1) 인터페이스 장치의 필요성 - CPU와 각 주변장치 간 차이.
전자장치인 cpu, 메모리와 달리 전자-기계/전자-자기 장치. 신호값의 변환 필요.
cpu전송속도가 더 빠름
cpu, 메모리의 워드 형식과 형식이 다름
주변 장치와 데이터 전송 방법
프로그램 입출력programmed IO : 프로세서가 컴퓨터 프로그램으로 직접 제어(cpu가 직접처리. 관여 큼. 일 시켜놓고 했나 안했나 계속 확인함.)
프로그램 실행 중 IO관련 연산 만남 → 입출력 모듈에게 명령 발송 → 모듈이 실행, IO장치 설정 → cpu는 입출력 연산이 끝날때까지 확인함. 시간낭비
cpu가 IO장치와 통신하기 위한 버스 할당 받기
분리 입출력isolated IO : 별도의 제어버스 사용. 복잡.
주기억장치와 IO장치 메모리가 분리. 제어버스도 다르고 주소도 명령어도 다름.
주기억장치를 나눠쓰지 않고 모든 주소공간을 사용함(효과적). IO주소 = 포트
메모리 사상 입출력Memory mapped IO : IO장치와 메모리가 공동 버스 사용. 단순.
버스도 같이 쓰고(명령어도 똑같고) 메모리 공간도 나눠씀.
인터럽트 입출력interrupted IO : 명령 내려놓고 cpu는 다른 일 하고 있음. 장치가 인터럽트 걸면 와서 확인함.
cpu는 실행중인 명령어 사이클이 끝나고 인터럽트를 감지하면 작업을 잠시 중단하고 서비스 프로그램으로 분기하여 IO전송을 처리함.
—여기까지는 모든 데이터 전송이 cpu를 거침. cpu가 주관.
직접 메모리 액세스DMA : IO장치가 cpu안거치고 메모리에 직접 접근. but 여전히 입출력 **명령을 해석, 실행하는 건 cpu 임!!!
DMA동안 DMAC가 메모리 버스를 권한갖고 사용중이므로 cpu는 사용 불가.
DMA는 BRQ로 cpu에게 버스 제어권 요청. cpu가 BGT로 승인
- DMA전송 종류
- 블록 전송 : 데이터 전송이 다 끝난 후 버스 반환
- 사이클 스틸 : DMA가 한바이트를 버퍼에 버퍼링 해 전송준비해둔 후 cpu로부터 한 사이클을 훔쳐 한바이트만 전송. cpu는 DMA가 훔쳐쓰는 동안 한 사이클 작업 지연.
- 인터리브 모드 : cpu가 안쓸 때 DMA가 권한 가져감
- DMA전송 종류
IO processor : IO장치에 관한 명령어를 전담하는 프로세서 IOP가 cpu대신 함.
버스 설계 목표
성능, 표준, 가격
표준 : 다양한 장치 취급의 유연성
- 메모리 버스 : 성능!! 가격
- IO버스 : 표준화!!! 성능
'뚝딱 공부 상자 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Chapter10. 병렬 컴퓨터 구조 (0) | 2022.06.25 |
---|---|
[컴퓨터 구조] Chapter9. 인터럽트 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter7. 보조기억장치 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter6. 기억장치 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter5. 제어 장치 (0) | 2022.06.25 |