찬란
시스템 버스, I/O 및 인터럽트 본문
해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다.
개요
- 시스템 버스
- 버스 중재
- I/O 장치의 접속
- 인터럽트를 이용한 I/O
- DMA를 이용한 I/O
시스템 버스 (System bus)
- 컴퓨터시스템의 구성 요소들을 상호 연결해주는 중심 통로
- 구성요소
- CPU
- 기억장치
- I/O장치
- I/O장치들은 각각 버스에 연결할 제어기를 가지고 있음
- 구성요소
시스템 버스의 조직
- 버스(bus)
- 구성 요소들간에 교환할 각종 정보들을 전송하는 선(line)들로 구성
- 데이터 버스(data bus)
- 양방향
- 주소 버스(address bus)
- 단방향
- CPU >> 기억장치 및 I/O 제어기
- 단방향
- 버스 대역폭(bus bandwidth)
- 버스의 속도를 나타내는 척도
- 버스 클록의 주기에 의해 결정
- $ {데이터 버스의 폭} / {버스 클록 주기} $
제어 버스(control bus)
- 기억장치 쓰기
- 기억장치 읽기
- I/O 쓰기
- I/O 읽기
- 주소 버스 = 16비트
- 주소지정 가능한 최대 기억장소 수 = $ 2^{16} = 65,536 (64K) $
- 32-bit word 단위 주소지정일 경우,
- $ 4byte \times 2^{16} = 256Kbyte $
- 주소 비트 = 24비트
- 중재 버스
- 인터럽트 버스
- 그 외의 제어신호들
- 버스 클록 신호
- 동기식 버스에서 버스 동작 동기화
- 리셋 신호
- 버스 클록 신호
중재 버스(arbitration bus)
- 버스 마스터(bus master)
- 시스템 버스에 접속되는 요소들 중에서 버스 사용의 주체가 되는 요소들
- ex. CPU, 기억장치, I/O 제어기
- 시스템 버스에 접속되는 요소들 중에서 버스 사용의 주체가 되는 요소들
- 버스 중재(bus arbitration)
- 복수의 버스 마스터가 버스를 이용하고자 할때 순서대로 하나씩 쓰게 해주는 동작
- 중재 버스
- 버스 중재를 위한 신호 선들의 집합
- 버스 요구 신호 (BREQ, Bus REQuest)
- 버스 승인 신호 (BGNT, Bus GraNT)
- 버스 사용중 신호 (BBUSY, Bus BUSY)
인터럽트 버스(interrupt bus)
- 인터럽트 메커니즘을 위한 제어 신호선들의 집합
- 인터럽트 요구 신호
- 인터럽트 확인 신호
시스템 버스의 기본 동작
- 쓰기 동작 순서
- 버스 마스터가 버스 사용권 획득
- 버스를 통하여 주소와 데이터 및 쓰기 신호 전송
- 읽기 동작 순서
- 버스 마스터가 버스 사용권 획득
- 주소와 읽기 신호 보내고, 데이터가 올 때까지 대기
동기식 버스와 비동기식 버스의 시간 흐름도
- 동기식 버스(synchronous bus)
- 공통의 버스 클록 기준으로 동작
- 장점
- 인터페이스 회로 간단
- 단점
- 클록 주기보다 짧은 시간이 걸리는 버스 동작은 동작 시간 낭비
- 일반적인 컴퓨터시스템
- 비동기식 버스(asynchronous bus)
- 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 동작
- 장점
- 시간 낭비 없음
- 단점
- 연속적 동작을 처리하기 위한 회로 복잡
- 소규모 컴퓨터
버스 중재 (Bus arbitration)
- 버스 경합(bus contention)
- 한 버스에 여러 마스터가 버스 사용 요구하는 현상
- 버스 중재(bus arbitration)
- 버스 경합 발생 시, 마스터들 스케줄링
- 버스 중재기(bus arbiter)
- 버스를 중재하는 하드웨어 모듈
- 제어 신호들의 연결 구조에 따른 중재 방식 분류
- 병렬 중재 방식
- 직렬 중재 방식
병렬 중재 방식
- 고정 우선순위 방식
- 가변 우선순위 방식
고정 우선순위 방식(Fixed-priority scheme)
- 중앙집중식
- 모든 버스 마스터들이 하나의 버스 중재기에 접속
- 가까운 순서대로 우선순위
- 분산식
- 모든 버스 마스터들이 중재기를 한 개씩 보유
- 중재 동작
- 각 중재기는 자신보다 높은 마스터의 요구 신호 받아 검사
- 그들이 버스 사용 요구를 하지 않은 경우에만 자신의 마스터에 승인 신호 발생
- 장점
- 중재 회로 간단
- 동작 회로 빠름
- 단점
- 고장 중재기 찾기 어려움
- 하나의 고장이 전체 시스템에 영향 미칠 수 있음
가변 우선순위 방식 (Dynamic-priority scheme)
- 시스템의 상태에 따라 버스 마스터들의 우선순위를 계속 변화
- 장점
- 모든 마스터들이 공정하게 버스 사용 가능
- 단점
- 중재 회로 복잡
회전 우선순위 방식 (Rotating priority)
- 중재 동작이 끝날 때마다 마스터의 우선순위가 하나씩 내려감
- 가장 낮은 마스터는 최상위 우선순위가 됨
- Acceptance-dependent식
- 버스 사용 승인 받은 마스터는 최하위 우선순위가 됨
- 바로 다음에 위치한 마스터가 최상위 우선순위를 가짐
동등 우선순위 방식
- 모든 마스터들이 동등한 우선순위
- FIFO 알고리즘
임의 우선순위 방식
- 각 중재 동작이 끝날 때마다 우선순위 랜덤
최소-최근 사용(LRU, Least-Recently Used)
- 최근 가장 오랫동안 버스 사용하지 않은 마스터에게 최상위 우선순위 할당
- 회로 매우 복잡
직렬 중재 방식
중앙집중식
- 하나의 버스 사용 승인 신호선(BGNT)이 데이지-체인(daisy-chain) 형태로 마스터들을 직렬 연결
- 우선순위는 그 연결된 순서대로
- 동작 원리
- 하나 이상 버스 마스터 사용 요구 시 공통 BREQ 신호 세트
- 데이지-체인의 첫 번째 접속 마스터로 승인 신호(BGNT) 전송
- BGNT 신호 받은 마스터는 버스 사용권 가짐 (버스 사용 요구된 상태일 때만)
- 요구X 라면, 승인 신호를 다음에 연결된 마스터로 통과
- 승인 신호는 버스를 요구한 마스터에게 도달할 때까지 계속 통과
- 버스 요구를 보낸 마스터들 중에서 중재기에 가장 가까이 위치한 마스터에게 승인 신호가 전달되면
그 마스터가 버스 사용권을 획득
- 버스 요구를 보낸 마스터들 중에서 중재기에 가장 가까이 위치한 마스터에게 승인 신호가 전달되면
분산식 직렬 중재 방식
- DBGNT (Daisy-chained bus grant signal)
- 데이지-신호 버스 승인 신호선
- 버스 중재기들을 순환형(circular)으로 접속
- 동작 원리
- 버스 사용권을 부여 받은 마스터가 시작하는 순간,
- 마스터 중재기는 자신의 우측 위치한 마스터의 중재기로 접속된 DBGNT 신호 세트
- 만약 마스터가 버스 사용을 신청하고 대기 중이었다면,
- 중재기는 즉시 DBGNT 신호 받아들임
- 그 후 BGNT 신호 발생시켜 마스터로 전송
- 만약 마스터가 버스 요구 안했다면,
- 그 신호를 우측 마스터의 중재기로 통과
- 이 과정은 버스 요구한 마스터에 도달할 때까지 반복
- 버스 사용권을 부여 받은 마스터가 시작하는 순간,
- 특징
- 각 마스터의 우선순위가 계속 변화
- 버스 사용 승인 받으면 다음 중재 동작에서 최하위 우선순위
- 버스 사용 마스터의 우측 마스터가 최상위 우선순위
- 순환형 구조에서 DBGNT 신호가 연결된 순서대로 우선순위가 결정
- 각 마스터의 우선순위가 계속 변화
- 단점
- 어느 한 지점 고장 시 전체 시스템 중단
폴링 방식 (Polling scheme)
- 폴링 방식의 원리
- 중재기가 버스 사용 원하는 마스터가 있는지 주기적으로 검사하여
- 승인 여부 결정
- 중재기가 버스 사용 원하는 마스터가 있는지 주기적으로 검사하여
- 하드웨어 폴링
- 소프트웨어 폴링
하드웨어 폴링 방식
- 버스 중재기와 각 버스 마스터 간에 별도의 폴링 선(polling line) 존재
- 2진 코드화된 폴링 주소를 이용하면, 폴링 선의 수가 $ log_{2}N $개로 감소
- 공통의 BREQ 선과 BBUSY선이 각각 한 개씩 존재
- 동작 순서
- 중재기는 폴링 주소를 발생하여 검사할 마스터를 지정
- 지정된 마스터가 버스 사용을 원하면 BREQ 신호를 세트
- BREQ 신호 세트되면,
- 중재기는 현재 검사 중 마스터에게 버스 사용 허가
- 아니면,
- 다음 마스터들에 대한 검사 순서대로 진행
- 우선순위 결정
- 중재기가 마스터를 검사하는 순서에 의해 결정
- 검사할 마스터의 번호는 2진 카운터를 이용하여 발생
소프트웨어 폴링 방식
- 폴링의 순서가 과정을 버스 중재기 내의 프로세서가 관장
- 장점
- 우선순위 변경이 용이
- 단점
- 속도 느림
I/O 장치의 접속
- I/O 제어
- I/O 장치가 시스템 버스에 직접 접속 못하는 이유
- IO장치들을 종류에 따라 제어 방법 서로 다름
- 제어 회로들 CPU 내부 포함시키는게 불가능
- CPU가 이것들을 직접 제어 불가
- IO 장치 데이터 전송 속도가 CPU에 비해 훨씬 느림
- IO 장치와 CPU가 사용하는 데이터 형식의 길이가 서로 다를 수 있음
- IO장치들을 종류에 따라 제어 방법 서로 다름
- 인터페이스 장치인 I/O 제어기 사용
- I/O 장치가 시스템 버스에 직접 접속 못하는 이유
- I/O 제어기의 주요 기능
- IO 장치의 제어와 타이밍 조정
- CPU와의 통신
- IO 장치와의 통신
- 데이터 버퍼링 기능 수행
- 오류 검출
상태/제어 레지스터 (Status/Control register)
- 내부적으로 두 개의 레지스터로 구성되지만 주소는 하나만 지정
- 상태 레지스터
- I/O 장치의 상태와 오류 검사 결과 등을 나타내는 비트들로 구성
- CPU의 읽기 동작 시 선택
- 제어 레지스터
- CPU가 보낸 I/O 명령 단어를 저장
- CPU의 쓰기 동작 시 선택
Programmed I/O
- CPU가 반복적으로 I/O 장치의 상태를 검사
- 장점
- 간단
- 별도의 하드웨어 필요 X
- 단점
- CPU가 I/O 동작에 직접 관여해야 함
- 그 동안 다른 일 못함
- CPU가 I/O 동작에 직접 관여해야 함
I/O 주소지정 (addressing)
- 각 I/O 장치 당 두 개씩의 주소 할당
- 데이터 레지스터의 주소
- 상태/제어 레지스터의 주소
- I/O 주소 지정 방법
- 기억장치 사상 (Memory-mapped)
- 분리형 (Isolated)
기억장치 사상 I/O
- 기억장치 주소 영역의 일부분을 I/O 제어기 내의 레지스터들의 주소로 할당하는 방식
- LOAD, STORE 명령어 등을 I/O 장치 제어에도 사용 가능
- 기억장치 읽기/쓰기 신호를 I/O 읽기/쓰기 신호로 사용
- 별도의 I/O 제어 신호가 필요하지 않음
- 장점
- 프로그래밍이 용이
- 사용 가능 명령어들이 다양
- 단점
- 기억장치 주소 공간이 감소 (절반)
분리형 I/O
- I/O 장치 주소공간을 기억장치 주소 공간과는 별도로 할당되는 방식
- I/O 제어를 위해서 별도의 I/O 명령어 사용
- IN, OUT 명령어
- 별도 I/O 읽기/쓰기 신호 필요
- 장점
- 기억장치 주소 공간이 줄어들지 않음
- 단점
- I/O제어를 위한 I/O 명령어들만 이용할 수 있으므로 프로그래밍이 불편
인터럽트를 이용한 I/O
- 인터럽트-구동 I/O (interrupt-driven I/O)
- 인터럽트 메커니즘 이용
- I/O 동작이 진행되는 동안에 CPU가 다른 작업을 처리
- 다중 인터럽트 방식
- 데이지-체인 방식
- 소프트웨어 폴링 방식
다중 인터럽트 방식 (Multiple interrupt)
- 인터럽트 요구선 (INTR)
- 인터럽트 확인선 (INTA)
- 장점
- CPU가 인터럽트를 요구한 장치를 쉽게 찾아낼 수 있음
- 단점
- 하드웨어 복잡
- I/O 장치들 수 가 CPU 인터럽트 요구 입력 핀의 수에 의해 제한됨
데이지-체인 방식(Daisy-chain)
- CPU로부터 발생되는 INTA 출력 선을 I/O 제어기에 직렬로 접속하는 방식
- 인터럽트 요구한 I/O 장치는 A In 입력을 받는 즉시 고유ID 번호(=인터럽트 벡터)를 CPU로 전송
- 인터럽트 벡터는 해당 I/O장치를 위한 인터럽트 서비스 루틴의 시작 주소를 결정하는데 사용
- 장점
- 하드웨어가 간단
- 단점
- Starvation
소프트웨어 폴링 방식(Software polling)
- TEST I/O 선 이용하여 인터럽트를 요구한 장치 검사
- 검사 순서가 우선순위를 결정
- 장점
- 우선순위의 변경이 용이
- 단점
- 처리 시간이 오래 걸림
직접 기억장치 엑세스 (DMA, Direct Memory Access)
- CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터를 전송하는 방식
- 사이클 스틸링(Cycle stealing)이라고도 불림
- 방법
- CPU가 주기억장치에 접근하지 않는 시간 동안,
- 시스템 버스를 사용하여 주기억장치와 I/O 장치 간에 데이터 전송
- CPU가 주기억장치에 접근하지 않는 시간 동안,
- DMA 처리 순서
- CPU가 DMA로 아래 명렁 전송
- I/O장치 주소
- 연산 지정자
- 메모리 시작 주소
- 전송될 데이터 word 수
- DMA는 CPU로 BREQ 전송
- CPU는 DMA로 BGNT 전송
- DMA 제어기가 주기억장치로부터 데이터 읽어서, 디스크 제어기로로 전송
- 각 데이터에 대해 2~4번 과정 두 번 반복
- 시스템 버스 두 번 사용
- 해결책
- I/O 장치들을 DMA 제어기에 접속
- DMA 제어기가 주기억장치를 엑세스 할 때만 시스템 버스 사용
- 해결책
- 저장할 데이터 남아있다면, 그 수만큼 2~4번 반복
- 모든 데이터 저장 완료되면, CPU로 INTR 전송
- CPU가 DMA로 아래 명렁 전송
- DMA 문제점
- I/O 장치는 종류/속도 다양, 간단한 DMA로는 한계있음
- 내부 기억장치 필요
- 해결책
- I/O 프로세서 사용해야 함
IOP
- 구성
- I/O 제어 프로그램을 수행할 수 있는 프로세서
- 지역 기억장치
- 시스템 버스 인터페이스
- 버스 마스터 회로
- I/O 버스 중재 회로
'컴퓨터 구조' 카테고리의 다른 글
어셈블리어 기초 (Basic of Assembly) (1) | 2023.06.11 |
---|---|
고성능 컴퓨터시스템 구조 (0) | 2023.06.11 |
보조저장장치 (0) | 2023.06.11 |
기억장치 (0) | 2023.06.11 |
명령어 (Instruction) (0) | 2023.04.23 |
Comments