일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 카카오 코테
- 프로그래머스
- Spring
- nestjs auth
- 코테
- AWS
- python
- 카카오
- Nodejs
- nestjs typeorm
- thymeleaf
- git
- @Autowired
- OpenCV
- 컴포넌트스캔
- C언어
- 코딩테스트
- 가상면접사례로배우는대규모시스템설계기초
- nestJS
- 해시
- 알고리즘
- 카카오 알고리즘
- 스프링
- @Component
- 구조체배열
- spring boot
- C++
- 파이썬
- 시스템호출
- TypeORM
- Today
- Total
공부 기록장 💻
[컴퓨터구조] 시스템 버스, I/O 및 인터럽트 본문
시스템 버스(System Bus)
버스(Bus)
- 컴퓨터 시스템의 구성 요소들(CPU, 기억장치, I/O 장치들) 을 상호 연결해주는 중심 통로
버스 대역폭(Bus Bandwidth)
- 버스의 속도를 나타내는 척도
- 단위 시간당 전송할 수 있는 데이터 양
- 버스 클록 주기 * 버스폭(BYTE단위)
- 버스 클록의 주파수가 50MHz(클록주기 20ns), 데이터 버스 폭이 64비트(8바이트)인 경우, 버스 대역 폭은 8 *(50*10^6) = 400[Mbytes/sec]
- 버스 클록의 주기에 의해 결정
기능에 따른 버스의 종류
1. 데이터 버스(Data bus)
- 시스템 요소들 사이에 데이터(값)를 전송하는데 사용되는 선들의 집합
- 양방향 전송(Bidirectional Transfer)
- 버스 폭(선들의 수) = CPU와 기억장치 사이에 한번에 전송되는 비트 수
2. 주소 버스(Address Bus)
3. 제어 버스(Control Bus)
데이터 버스(data bus)
– 시스템 요소들 사이에 데이터를 전송하는 데 사용되는 선들의 집합
– 양방향 전송(bidirectional transfer)
– 버스 폭(선들의 수) = CPU와 기억장치 사이에 한 번에 전송되는 비트 수
• 주소 버스(address bus)
– CPU가 기억장치로 (또는 기억장치로부터) 데이터 쓰기 (또는 읽기) 동작을 할
때, 해당 기억장소를 지정하는 주소를 전송하기 위한 선들의 집합
– 단방향 전송(unidirectional transfer) : CPU → 기억장치 및 I/O 제어기
– 주소 버스의 비트 수에 의해 시스템에 접속될 수 있는 전체 기억장치 용량이
결정됨
– 직접 주소지정 할 수 있는 기억장소의 단위 : 바이트(byte) 혹은 단어(word)
• 제어 버스(control bus)
– CPU와 기억장치 및 I/O 장치 사이에 제어 신호들을 전송하는 선들의 집합
제어 버스
- 기억 장치 및 I/O 장치와의 데이터 교환을 위한 제어 신호들 (기억장치 쓰기/읽기 신호, I/O 쓰기/읽기 신호)
- 버스 중재를 위한 제어 신호들
0 인터럽트 메커니즘을 위한 제어 신호들
중재 버스(Arbitration Bus)
- 버스 마스터(Bus Master) : 시스템 버스에 접속되는 요소들 중에서 버스 사용의 주체가 되는 요소들(CPU< 기억장치 모듈, I/O 제어기)
- 버스 중재(Bus Arbitration) : 시스템 버스에 접속된 두 개 이상의 버스 마슽들이 동시에 버스를 사용하고자 할 때 순서대로 한 개의 마스터씩 버스를 사용할 수 있게 해주는 동작
- 중재 버스 - 1) 버스요구신호(Bus request) / 2) 버스승인신호(Bus Grant) / 3) 버스 사용중 신호(Bus Busy)
인터럽트 버스(Interrupt Bus)
인터럽트 메커니즘을 위한 제어 신호선들의 집합
1) 인터럽트 요구신호 (Interrupt Request) : I/O 장치가 인터럽트를 요구했음을 알리는 신호
2) 인터럽트 확인신호 (Interrupt Acknowledge) : CPU가 인터럽트 요구를 인식했음을 알리는 신호
- 버스 클록 신호(Bus Clock) : 동기식 버스에서 버스 동작들의 시작시간을 일치시키기 위하여 제공되는 공통 클록 신호
- 리셋 신호(Reset) : 모든 시스템 요소들의 동작을 초기화시키는 신호
시스템 버스의 기본 동작
- 쓰기 동작(Write Operation) 순서
1) 버스 마스터가 버스 사용권 획득
2) 버스를 통하여 주소와 데이터 및 쓰기 신호 전송
- 읽기 동작(Read Operation) 순서
1) 버스 마스터가 버스 사용권 획득
2) 주소와 읽기 신호를 보내고, 데이터가 전송되어 올 때 까지 대기
- 버스 동작의 타이밍에 따른 버스의 분류
1) 동기식 버스(Synchronous Bus) : 시스템 버스에서 모든 버스 동작들이 공통의 버스 클럭을 기준으로 발생
2) 비동기식 버스(Asynchronous Bus) : 버스 동작들의 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 결정
버스 중재 (Bus Arbitration)
- 버스 경합(Bus Contention) : 한 개의 시스템 버스에 접속된 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 현상
- 버스 중재(Bus Arbitration) : 버스 경합 발생 시, 어떤 기준에 따라 버스 마스터들 중에서 한 개씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작 -> 버스 중재기(Bus Arbiter) : 버스를 중재하는 하드웨어 모듈
< 버스 중재 방식의 분류>
제어 신호들의 연결 구조에 따른 중재 방식의 분류
1. 병렬 중재 방식(Parallel Arbitration Scheme)
- 각 버스 마스터들이 독립적인 버스 요구 신호를 발생하고, 버스 승인 신호를 받아옴
- 1) 고정-우선순위 방식(Fixed-Priority Scheme) : 각 버스 마스터에 지정된 우선순위가 고정되어 있는 방식
- 2) 가변-우선순위 방식(Dynamic-Priority Scheme) : 우선순위를 변경할 수 있는 방식
2. 직렬 중재 방식(Seiral Arbitration Scheme)
- 버스 요구와 승인 신호 선이 각각 한 개씩만 존재하며, 각 신호 선을 버스 마스터들 간에 직렬로 접속하는 방식
- 1) 중앙집중식 직렬 중재 방식 - 하나의 중재 신호선(BGNT)이 데이지-체인(dasiy chain) 형태로 모든 버스마스터들을 직렬로 연결
- 2) 분산식 직렬 중재 방식 - 데이지-체인 버스 승인 신호(Daisy-chained Bus Grant Signal: DBGNT)가 버스 중재기들을 순환형(circular) 으로 접속
버스 중재기의 위치에 따른 분류
1. 중앙집중식 중재 방식(Centralized Arbitration Scheme)
- 시스템 내에 버스 중재기가 한 개만 존재하는 방식
- 버스 마스터들이 발생하는 버스 요구 신호들은 하나의 중재기로 보내지고, 중재기는 정해진 중재 원칙에 따라 버스마스터에게 승인 신호를 발생
2. 분산식 중재 방식(Decentralized Arbitration Scheme)
- 여러 개의 버스 중재기들이 존재하며(일반적으로 각 버스마스터가 중재기를 한 개씩 가짐), 버스 중재 동작이 각 마스터의 중재기에 의하여 이루어지는 방식
1) 중앙집중식 고정-우선순위 중재방식
- 모든 버스 마스터들이 하나의 버스 중재기에 접속
- 중재기와 가장 가까이 위치한 버스마스터 1 이 가장 높은 우선순위, 버스마스터4가 가장 낮은 운선순위를 가지는 것으로 가정
2) 분산식 고정-우선순위 방식
- 모든 버스 마스터들이 중재기를 한 개씩 보유
- 중재 동작
3) 가변 우선순위 방식
- 시스템의 상태(또는 조건)에 따라 각 버스 마스터들의 우선순위를 계속 변화시키는 방식
- 회전 우선순위(rotating priority) 방식
폴링 방식(Polling Scheme)
- 폴링 방식: 버스 사용을 원하는 마스터가 있는지를 버스 중재기가 주기적으로 검사하여 사용 승인 여부를 결정
1) 하드 웨어 폴링 방식
- 버스 중재기오 버스 마스터 간에 별도의 폴링 선(polling line)이 존재
2) 소프트웨어 폴링 방식
- 폴링의 순서와 과정을 버스 중재기 내 프로세서가 관장하는 방식(프로그램 실행)
I/O 장치의 접속
I/O 제어
- I/O 장치가 시스템 버스에 직접 접속되지 못하는 이유:
=> 인터 페이스 장치인 I/O 제어기 (I/O Controller) 사용
I/O 제어기의 주요 기능
- I/O 장치의 제어와 타이밍 조정
- CPU와의 통신 담당
- I/O 장치와의 통신 담당
- 데이터 버퍼링(Data Buffering) 기능 수행
- 오류 검출
프로그램을 이용한 I/O (Programmed I/O)
- CPU가 반복적으로 I/O 장치의 상태를 검사하며 I/O 동작을 처리하는 방식
인터럽트를 이용한 I/O
- 인터럽트-구동(Interruptive-driven I/O) : 인터럽트 메커니즘을 이용
1. 다중-인터럽트 방식
- 각 I/O 제어기와 CPU 사이에 별도의 인터럽트 요구(INTR: Interrupt Request)선과 인터럽트 확인(INTA: Interrupt Acknowledge) 선을 접속하는 방법
2. 데이지-체인 방식
- CPU로부터 발생되는 INTA 출력 선을 I/O 제어기들에 직렬로 접속하는 방식
- 인터럽트를 요구한 I/O 장치는 AIn 입력을 받는 즉시 자신의 고유 ID 번호 (인터럽트 벡터: Interrupt Vecotr)를 데이터 버스를 통해 CPU로 전송
3. 소프트웨어 폴링 방식
- CPU가 모든 I/O 제어기들에 접속된 TEST I/O 선을 이용하여 인터럽트를 요구한 장치를 검사하는 방식 (인터럽트 플래그 세트되어 있는지 검사)
직접기억장치액세스(Direct Memory Access: DMA)
DMA
- CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터를 전송하는 방식 - 사이클 스틸링(Cycle Stealing)
- 방법: CPU가 주기억장치를 액세스 하지 않는 시간 동안 시스템 버스를 사용해 주기억장치와 I/O 장치 간의 데이터 전송
DMA 제어기의 내부 구조
- 문제점1, 2
I/O 프로세서 (I/O 채널)
- IOP 보드에 포함될 요소들
'# CS Study > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 제어 유니트 (Control Unit) (0) | 2021.06.04 |
---|---|
[컴퓨터구조] 컴퓨터 산술과 논리 연산 (0) | 2021.04.21 |
[컴퓨터구조] CPU 구조와 기능 - 명령어 파이프라이닝(2, 4단계), 명령어 세트 (0) | 2021.04.20 |
[컴퓨터구조] CPU 구조와 기능 - 기본 구조(ALU, Register, Control Unit) / CPU 레지스터(PC, AC, IR, MAR, MBR) / 명령어 실행(인출 사이클, 실행 사이클, 인터럽트 사이클 ISR, 간접 사이클) (0) | 2021.04.20 |