시스템 버스
CPU의 동작과정에서, 제어 장치의 제어 신호를 다른 장치에 전달하고, 다른 장치로부터 오는 제어 신호를
제어 장치로 보내는 과정에서 필연적으로 사용되는 것이 시스템 버스이다.
그렇다면 이 시스템 버스는 어떻게 구성된 것인가.
시스템 버스는 메인 메모리가 있는 CPU와 연결되어 있는 케이블과 커넥터로 구성된 데이터 전달 통로이다.
- 주소 버스
- 제어 버스
- 데이터 버스
이 시스템 버스에는 위의 세 종류로 구성되어 있는데, 하나씩 알아보도록 하자.
1)주소 버스
CPU 또는 DMA(Direct Memory Access) 장치에서 주메모리와 I/O 장치로 각각
기억 장치 주소 또는 I/O 장치 포트 번호를 전달하기 위해 사용하는 전달 통로로,
주소 전달을 목적으로 구성된 연결 통로이기 때문에 단방향 연결 통로이다.
주소 버스의 폭(비트 수)는 기억장치의 주소 수, 즉 기억장치의 최대 크기를 나타낸다.(2^주소 버스의 최대 비트수)
2)제어 버스
제어 버스는 주소 버스와 데이터 버스를 제어하는 신호를 전달하는 통로이다.
제어 신호는 기억 장치와 I/O 장치에 대한 Read/Write 작업을 명령하는 신호이기 때문에 양방향 연결 통로이다.
- 기억 장치 읽기 신호 : 주소 버스로부터 받은 주소로 기억 장치에 접근해 data를 읽어 데이터 버스에 data를 싣는 신호
- 기억 장치 쓰기 신호 : 데이터 버스에 있는 data를 주소 버스에 담긴 주소에 저장하게 해주는 제어 신호
- I/O 읽기 신호 : 주소 버스에 있는 I/O 장치 포트 번호로 I/O 장치에 접근해 data를 받아와서 데이터 버스에 해당 데이터를 담게 하는 신호
- I/O 쓰기 신호 : 데이터 버스에 있는 data를 주소 버스에 담긴 I/O 포트 번호에 맞게 I/O 장치에 접근해 I/O 장치로 출력하게 하는 제어 신호
3)데이터 버스
CPU와 기억장치, I/O 장치 사이에서 전달되는 데이터를 저장하는 통로이다.
제어 버스와 마찬가지로 Read/Write를 지원해야하기 때문에 양방향 버스이다.
기억 장치와 I/O 장치의 명령어와 데이터를 CPU에 보내고, CPU 연산 결과를 기억 장치와 I/O 장치에 보내는 역할을 한다.
데이터 버스 크기(폭)은 한 번에 전송될 수 있는 데이터의 크기(비트 수)를 나타낸다.
즉 Word의 크기, 레지스터의 크기와 동일하다.
인터럽트
인터럽트의 종류는 크게 동기 인터럽트(예외)와 비동기 인터럽트(하드웨어 인터럽트)로 나뉘며,
각각 폴트, 트랩, 중단, 소프트웨어 인터럽트와 막을 수 있는 인터럽트, 막을 수 없는 인터럽트로 나뉜다.
1)동기 인터럽트(예외)
- 폴트
핸들러가 정정할 수 있는 가능성이 있는 에러의 결과로 발생한다. 정정할 수 있다고 보기 때문에
에러가 발생한 해당 명령어부터 실행을 재개한다.
- 트랩
의도적으로 발생시킨 인터럽트 예외 상황으로, 인터럽트가 발생한 다음 명령어부터 실행을 재개한다.
대표적으로 디버깅이 해당된다.
- 중단
중단은 대부분 하드웨어 오류 같은 복구 불가능한 치명적인 에러에서 발생한다.
2)비동기 인터럽트(하드웨어 인터럽트)
비동기 인터럽트는 주로 입출력 장치등에 의해서 CPU를 호출하는 인터럽트로
크게 사전에 막을 수 있는 인터럽트인지, 막을 수 없는 인터럽트인지에 따라 나뉜다.
막을 수 있는 인터럽트의 경우에는 입출력 장치들에 의해 사전에 어느 정도 약속이 된 인터럽트가 대부분 해당된다.
막을 수 없는 인터럽트의 경우에는 정전, 하드웨어 손상의 경우가 해당된다.
조금 더 상세하게 들어가면, 다음과 같이 나뉜다.
- 입출력 인터럽트(I/O Interrupt)
입출력 작업의 종료나 입출력 오류에 의해 CPU의 기능이 요청됨
- 정전/전원 이상 인터럽트(Power Fail Interrupt)
정전이나 전원 공급 이상 발생시 인터럽트 발생. 컴퓨터의 예비 전력을 이용하는 방식이다.
컴퓨터의 파워는 실제로 정전이 일어난 직후에도 전원이 종료될 때까지 대략 4ms의 시간이 있으며,
그 시간 동안 인터럽트 핸들러를 통해 정전으로 인한 인터럽트를 처리한다.
- 기계 착오 인터럽트(Machine Check Interrupt)
CPU의 기능적인 오류
- 외부 신호 인터럽트(External Interrupt)
I/O 장치가 아닌 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
참고 서적
혼자 공부하는 컴퓨터 구조+운영체제(강민철 저, 한빛미디어)
'Dev > CS' 카테고리의 다른 글
[운영체제] 프로세스와 스레드, CPU 스케쥴링 (0) | 2023.10.17 |
---|---|
[컴퓨터 구조, 운영체제] 입출력장치, 운영체제 시작하기 (1) | 2023.10.10 |
[컴퓨터 구조] 메모리와 캐시메모리, 보조기억장치 (0) | 2023.09.29 |
CS스터디 1주차 추가 정리 (0) | 2023.09.25 |
[컴퓨터 구조] 데이터, 명령어 (0) | 2023.09.20 |
댓글