CS/컴퓨터구조(김종현)

[컴퓨터구조] 컴퓨터시스템 개요 (3)

하늘아래현서 2023. 3. 10. 14:19
김종현 컴퓨터구조론 개정5판 생능출판사, 김종상 컴퓨터시스템구조 제3판 프로텍미디어를 정리, 요약하여 올리는 글입니다.

 

1. CPU - 메모리 접속

1-1) 시스템 버스    

    CPU는 컴퓨터의 뇌와 같다. 뇌(CPU)가 컴퓨터의 다른 주요 구성요소들과 어떻게 접근하고 제어할까. 사실 CPU와 기억장치 즉 메모리는 직접적으로 연결되어 있지 않다. CPU는 데이터를 교환하는 통로, 즉 버스를 통해서 메모리에 있는 데이터를 이동하고 메모리에 저장도 할 수 있다. 이 통로를 시스템 버스(system bus)라 한다. CPU는 아래의 그림과 같이 시스템 내의 다른 요소들과 시스템 버스를 통해 데이터를 주고 받는다.

출처 : 위키피디아

1-2) 주소 버스(address bus)란?

    - 주소 버스는 CPU가 발생하는 주소 정보를 전송하는 신호 선들의 집합이다.

    - 각 주소 선은 하나의 주소 비트를 전송하는 데 사용된다. 각각의 주소마다 연결되어 있다고 생각하면 된다. 결국 전체 주소 선들의 개수가 CPU와 인식할 수 있는 메모리의 용량이라고 할 수 있다.

    -  주소 버스는 CPU에 의해 발생되어 메모리로와 I/O 장치로 보내는 정보이기 때문에 단방향성이다.

    - CPU가 발생하는 주소 비트들의 개수를 주소 버스의 폭(width)라고 한다. 폭이 16bit라면 최대 216 = 65,536개(64K)의 메모리의 주소를 지정하고 접근할 수 있다.

    - 예를 들어, 아래 그림과 같이 주소 버스의 폭이 32bit라면 CPU는 최대 232 = 4,294,967,296(약42억)개의 주소를 알 수 있다. (230byte = 210MB = 1GB이다. 그러면 232 = 230*22 = 4GB이다.) 따라서 CPU는 한 번에 메모리를 최대 4GB를 인식할 수 있다.

 

1-3) 데이터 버스(data bus)란?

    - 데이터 버스는 CPU가 메모리 혹은 I/O 장치와의 사이에서 데이터를 전송하기 위한 신호선들의 집합이다.

    - 데이터 버스는 읽기/쓰기 모두 지원하기 때문에 양방향성 전송이다.

    - 데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정한다. 데이터 버스가 32bit인 시스템에서는 CPU가 한 번에 메모리로부터 32bit를 읽어올 수 있다.

    - 이렇게 CPU가 메모리로부터 한 번에 읽어올 수 있는 비트 수를 단어(word)라 한다. 이 word는 다시 말해 CPU의 명령어의 길이라고 할 수 있다. 예를 들어, 4096워드를 가진 기억 장치에 대해서는 12비트의 주소가 필요하다. 16비트의 

    - CPU가 한번에 가져올 수 있는 비트의 폭으로 x32, x64 운영체제가 나뉜다. 과거 32bit 운영체제만 있을 때에는 4GB 램을 쓸 수 밖에 없었던 이유도 설명된다. 다음의 블로그 글을 참고하면 좋을 것 같다.

 

https://st-lab.tistory.com/198

 

메모리 구조 [Memory Structure]

안녕하세요. 오늘은 제목에서 밝혔듯 메모리 구조에 대해 알아보려 합니다. 흔히 메모리라고 하면 RAM을 지칭하는데요, 보통 컴퓨터 구조에 대해 학습하시거나 배우셨던 분들은 알겠지만 메모리

st-lab.tistory.com

 

1-4) 제어 버스(control bus)란?

    - 제어 버스란 CPU가 시스템 내의 각종 요소들의 동작을 제어하는데 필요한 신호 선들의 집합이다.

    - 가장 기본적인 제어 신호들은 메모리 읽기/쓰기(memory read/write), I/O 읽기/쓰기 (I/O read/write) 신호가 있다. 

 

1-5) CPU의 메모리 접근

    - CPU가 데이터를 기억장치(메모리)에 저장하거나 읽는 동작을 엑세스(access)라고 한다.

출처 :김종현 컴퓨터구조론

 

1-6) 메모리 쓰기 시간(memory write time)

    - CPU는 데이터를 저장할 메모리의 주소저장할 데이터를 각각 주소 버스데이터 버스에 실어서 보내면서 동시에 쓰기 신호를 활성화(activate)한다.

    - 신호들은 메모리에 쓰기 동작이 완료될 때까지 그대로 유지해야 한다.

    - CPU가 주소와 데이터를 보내는 순간부터 저장이 완료될 때까지의 시간을 메모리 쓰기 시간(memory write time)이라고 한다.

출처 : 김종현 컴퓨터구조론

 

1-7) 메모리 읽기 시간(memory read time)

    - CPU는 읽을 데이터가 저장되어 있는 메모리 주소주소 버스를 통해서 메모리로 보내면서 읽기 신호를 활성화한다.

    - 일정 지연 시간이 경과한 후에 메모리로부터 읽혀진 데이터가 데이터 버스를 실려서 CPU는 데이터를 인터페이스 회를 통해 읽어들인다. 여기서 지연 시간은 주소를 해독하는데 걸리는 시간과 메모리 내부에서 데이터를 인출하는데 걸리는 시간을 합한 시간이다.

    - CPU가 주소를 발생한 시간부터 읽기 동작이 완료 될 때까지의 시간을 메모리 읽기 시간(memory read time)이라고 한다.

출처 :김종현 컴퓨터구조론

 

2. CPU - I/O 접속

    - CPU는 보조저장장치나 I/O 장치와 직접적으로 접근할 수 없다. 따라서 별도의 인터페이스 회로(interface circuit) 혹은 I/O 장치 제어기(controller)를 통하여 CPU와 접속할 수 있다. 

    - 아래 그림과 같이 CPU가 시스템 버스를 통해서 I/O 장치 제어기를 통하여 I/O 장치와 접근할 수 있다.

    - 데이터 레지스터는 CPU와 I/O 장치간의 임시 데이터 메모리를 뜻한다. 

    - 상태 레지스터는 I/O 장치의 현재 상태를 나타내는 비트를 저장하는 메모리를 뜻한다. 입력할 준비가 되었다면 입력 준비(In_RDY) 비트를 1로 만든다. 입력할 준비가 안되었다면 In_RDY 비트는 0이고 CPU는 입력할 준비가 되었는지 상태 레지스터를 게속해서 검사하길 반복할 것이다.

출처 :김종현 컴퓨터구조론

 

2-1) CPU - 키보드

    - CPU가 키보드로부터 데이터를 입력받고자 할 때 다음과 같이 진행된다.

    - 키보드 키(key)에 대응하는 8 비트(ASCII 코드 7비트 + 패리티 비트)가 키보드 제어기로 전송한다. -> 데이터 레지스터에 저장하고 상태 레지스터에 비트를 확인한다. -> 상태 레지스터의 In_RDY 비트가 1로 세팅되었다면 데이터 레지스터의 값을 CPU로 읽어들인다.

 

2-2) CPU - 프린터

    - 키보드와 마찬가지이다. 프린터를 이용해 출력하는 과정은 다음과 같이 진행된다.

    - CPU는 프린터의 상태 레지스터 값을 읽어서 Out_RDY 비트를 검사한다. -> Out_RDY 비트가 1로 세팅되었다면 CPU는 프린트할 데이터를 프린터 제어기의 데이터 레지스터에 쓰고 프린트 시작 신호를 보낸다 -> 제어기는 프린터의 하드웨어를 구동하여 프린트한다.

 

2-3) CPU - 다른 보조저장장치들

    - 하드 디스크, SSD 등등 다른 보조저장장치들도 각 장치마다 제어기를 통해 유사한 방법으로 접근한다.

    - 하지만 키보드의 경우에는 데이터가 1byte(8bit) 단위로 전송되지만 보조저장장치는 블록(512byte, 1024byte, 4096byte...)단위로 전송되기 때문에 제어기 내에서 적어도 한 블록 이상을 임시로 저장할 수 있는 데이터 버퍼(data buffer)가 있어야 한다.