Major`/컴퓨터구조

[컴퓨터구조] 시스템의 구성

Avenus 2022. 1. 17. 15:31

시스템 버스 (System Bus)

- 컴퓨터의 구성요소(CPU, 기억장치, I/O장치)들을 서로 연결하고, Data/신호 교환을 위한 통로 

- 한 번에 한 개의 장치만 Data 전송 가능

- 데이터 버스 / 주소 버스 / 제어 버스가 존재한다

 

데이터 버스 (Data Bus)

CPU와 (기억장치, I/O장치) 사이에서 Data를 전달하는 통로

  • (기억장치, I/O장치)명령어와 Data를 CPU로 보낸다
  • CPU 연산결과를 (기억장치, I/O장치)로 보낸다

- 데이터를 주고 받아야 하기 때문에 양방향 버스 

- 데이터 버스 크기(폭) = 한 번에 전송될 수 있는 Data의 크기(비트 수)를 결정

  • Word 크기, 레지스터 크기와 같다
  • if 데이터 버스 크기 = 32bit >> Data를 한 번에 32bit씩 읽을 수 있다

 

주소 버스 (Address Bus)

CPU → (주기억장치, I/O장치)로 (기억장치 주소, I/O 장치 포트 번호)를 전달하는 통로

  • Data를 정확하게 보내려면 주소가 필요하다

- 주소를 전달만 하기 때문에 단방향 버스 

- 주소 버스 크기(폭) = 최대 기억장치 용량 결정 (2주소 버스 크기) 

 

제어 버스 (Control Bus)

데이터버스, 주소버스를 제어하기 위해 제어신호들을 전송하는 통로

- 읽기/쓰기 동작을 모두 수행하기 때문에 양방향 버스 

- CPU or 시스템 구성에 따라 제어 선 개수가 다르다 

 

기억장치 읽기 신호 

  • 주소가 지정하는 기억장소의 Data를 읽고, 버스에 해당 Data를 실리게 하는 제어 신호

기억장치 쓰기 신호 

  • 버스에 실린 Data를, 주소가 지정하는 기억장소에 저장하게 하는 제어 신호

I/O 읽기 신호 

  • 지정된 I/O 장치로부터 Data를 읽어서, 버스에 해당 Data를 실리게 하는 제어 신호

I/O 쓰기 신호 

  • 버스에 실린 Data를, 지정된 I/O 장치로 출력하게 하는 제어 신호

 


 

CPU ↔ 기억장치 통신

액세스 

  • CPU가 Data를 기억장치에 저장하거나, 이미 저장되어 있는 Data를 읽는 동작 

- 버스(주소, 데이터), 제어신호(기억장치 읽기/쓰기 신호)가 필요

 

적재(Load), 저장(Store) 명령에 의해 수행

▶ 적재(Load) : 기억장치 읽기

  1. 주소 버스 : 기억장치에서 읽을 Data가 저장된 주소값 전달 (CPU → 기억장치)
  2. 제어 버스 : "기억장치 읽기 신호" 전달 (CPU → 기억장치)
  3. 데이터 버스 : 해당 기억장치에 저장된 Data 전달 (기억장치 → CPU) 

▶ 저장(Store) : 기억장치 쓰기

  1. 주소 버스 : Data를 저장할 기억장치의 주소값 전달 (CPU → 기억장치)
  2. 제어 버스 : "기억장치 쓰기 신호" 전달 (CPU → 기억장치)
  3. 데이터 버스 : 저장할 Data를 기억장치에 전달 (CPU → 기억장치) 

기억장치 읽기 동작 시간 흐름도

1. Data가 저장되어 있는 기억장치 주소를 주소버스를 통해 보내면서 '읽기 신호 활성화' 

2. 지연 시간이 경과하고, 해당 기억장치의 Data가 데이터 버스에 실린다

지연 시간

- 주소 해독 시간 + 기억장치로부터 Data 읽는데 걸리는 시간

>> 읽기 시간 : CPU가 기억장치로 주소를 보낸 순간 ~ 읽기 동작이 완료될 때까지 걸린 시간

 

 

기억장치 쓰기 동작 시간 흐름도

- (저장할 Data, Data를 저장할 기억장치의 주소)를 각각 (데이터버스, 주소버스)를 통해 보내면서 '쓰기 신호 활성화' 

>> 쓰기 시간 :  CPU가 기억장치로 Data/주소를 보낸 순간 ~ 쓰기 동작 완료될 때까지 걸린 시간

 


 

CPU ↔ I/O장치 통신

- 버스(주소, 데이터), 제어신호(I/O 읽기/쓰기 신호)가 필요

- 시스템 버스에서 I/O장치에 직접 연결하지 못하기 때문에 I/O 장치 제어기를 통해서 제어를 전달

- 접속 경로 : CPU ↔ 시스템 버스 ↔ I/O 장치 제어기 ↔ I/O 장치 

 

입력(Input), 출력(Output) 명령에 의해 수행

▶ 입력(Input) : I/O 읽기

  1. 주소 버스 : I/O 장치 포트 번호 전달 (CPU → 기억장치) 
  2. 제어 버스 : "I/O 읽기 신호" 전달 (CPU → 기억장치)
  3. 데이터 버스 : 해당 I/O 장치에 저장된 Data 전달 (기억장치 → CPU) 

▶ 출력(Output) : I/O 쓰기

  1. 주소 버스 : I/O 장치 포트 번호 전달 (CPU → 기억장치) 
  2. 제어 버스 : "I/O 쓰기 신호" 전달 (CPU → 기억장치)
  3. 데이터 버스 : 저장할 Data를 I/O 장치에 전달 (CPU → 기억장치) 

인터럽트 (Interrupt)

- I/O 장치는 제어신호를 통해서 인터럽트 요청을 보내서 CPU한테 I/O작업을 요청할 수 있다

※ 인터럽트 요청 (I/O → CPU)

  • I/O 준비를 끝낸 I/O 장치가 CPU한테 I/O 작업 요청

※ 인터럽트 확인 (CPU → I/O)

  • CPU가 I/O 작업을 수행하는 것을 I/O 장치에 통보 

I/O 장치 제어기 레지스터

- 상태 R / 데이터 R 각각에 주소가 할당된다

  • I/O 장치에는 기본적으로 2개의 주소가 할당

※ 데이터 레지스터

- CPU ↔ I/O 장치 간에 전달되는 Data들을 일시적으로 저장

  • Data 임시 기억 장치

※ 상태 레지스터

- I/O 장치의 현재 상태를 나타내는 비트들을 저장하는 레지스터

  • 준비 상태(RDY), 데이터 전송 확인(ACK) 비트,... 등이 존재한다

 


 

기억장치 ↔ I/O장치 통신

- CPU를 이용하지 않고, 직접 기억장치 엑세스 방식 (DMA : Direct Memory Access)으로 통신

  • DMA 제어기는 CPU를 대신해서 주소버스, 제어버스에 신호 전달
  • DMA 제어기는 통신 시작 전에 CPU한테 버스 사용 허가를 받아야 한다