Dreaming Deve1oper

컴퓨터 구성품의 연결 (Day 1) 본문

컴퓨터 구조

컴퓨터 구성품의 연결 (Day 1)

주현테크 2022. 3. 13. 18:40
Memory Read

 

Control Bus를 통해 메모리를 읽는다 / Address, Control Bus는 동시에 전송

- CPU / BUS / Cache / Main Memory 총 개의 Block

- CPU에서 Main Memory에 있는 데이터를 읽기 위해선 주소가 필요하다. ( Address Bus를 통해 주소 이동)

- Control Bus를 통해 Mmory를 읽는 것인지 쓰는 것인지 (read / write)에 대한 정보를 CPU가 보내주어야한다.

- Main Memory로 정보들이 바로 전송되는 것이 아니라 Cache로 먼저 전송된다.

 

 

※ Cache: CPU가 먼저 읽을것 같은 데이터가 저장되어 있다.

  1. 저장되어 있는 경우: Data Bus를 통해 CPU로 전송해준다.
  2. 저장되어 있지 않는 경우: Cache에 전송된 신호를 다시 Main Memory로 전송해 데이터를 찾은 후 Data Bus를 통해 CPU로 전송해준다.

 

 

Address Bus

- 주소를 전송하는 신호 선들의 집합.

- 신호 선들의 갯수에 따라 CPU와 접속할 수 있는 최대 메모리 용량이 결정된다.

  └ Address Bus의 Bit 수: 16Bits라면 최대 2^16 = 64 * 2^10 = 64K개의 Memory Address 지정 가능.

 

 

x축: 시간의 흐름

Address Bus / Data Bus: 마름모 안에 n개의 Bit 전송

Read Enable: 1개의 Bit 전송 ( 0 > 1 > 0)

 

 


 

Memory Write

 

- CPU에서 Main Memory로 주소를 보낸다. (Memory의 어느 위치에 저장할 것인지 지정하기 위함)

- Write를 하기 위해 CPU에서 연산한 데이터를 Main Memory로 보낸다. (Data Bus에 메모리가 적재되어야 함)

- CPU가 Main Memory에게 Write Enable 신호를 동시에 전송해준다. (메모리를 사용하는데 그에 필요한 데이터는 Data Bus를 통해 전송되고 있으며 그것을 어느곳에 사용할지는 Address Bus로 전송되는 주소를 통해 알 수 있다)

 

 

Data Bus

- Data를 전송하기 위한 신호 선들의 집합.

- Data Bus 폭이 32Bits라면 CPU와 Memory간 Data 전송은 한번에 32Bits씩 가능하다.

   └ Data Bus의 라인 하나하나가 32개 있다. 병렬로 32개를 한번에 보낼 수 있다.

 

 

Control Bus

- System 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합 (Memory Read / Write 신호)

 

 

동시에 전송되어야함

끝나는 지점은 동일하지만, 작업이 끝난 후 모든 신호를 Disable 시킨다.

 

 


 

I/O Read

 

I/O Device Controller

- CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고 Data를 이동함으로써 명령을 수행하는 전자회로 장치 (Keyboard Controller, Printer Controller 등...)

- 서로 데이터를 전송하고 받기위한 중간의 대리인 역할을 수행한다.

 

- Status Register (상태 레지스터): I/O 장치의 현재 상태를 나타내는 Bit들을 저장한 레지스터. 준비상태 (RDY) Bits, Data 전송확인 (ACK) Bits 등

 

- Data Register: CPU와 I/O 장치 간에 이동되는 Data를 일시적으로 저장하는 레지스터.

 

 

- I/O controller는 System Bus와 직접적으로 연결되어 있지만 I/O는 중간에 I/O Controller를 두고 연결되어 있다.

 

- I/O Read를 위해선 주소가 필요하다. > Address Bus를 통해 저장장치(SSD, HDD...)의 어떤 부분의 데이터를 가지고올지 알 수 있다.

- 동시에 Control Bus를 통해 데이터의 Read/Write 여부를 알 수 있다.

 

I/O Controller가 위의 과정을 통해 어디에 있는 데이터를 받아올지 결정한 뒤 I/O 혹은 SSD에 신호를 보냄 > I/O, SSD에서 데이터를 가져와 Data Register에 저장함 > 저장될때마다 Status Register가 0값을 1로 바꿈 > CPU는 Status Register 값이 1(In_RDY 비트)이 되는 순간을 계속 관찰 > 1이된 순간 I/O Controller에 있는 Data Register의 데이터를  Data Bus를 통해 가지고옴

 

 

 


 

System Bus의 공유

 

Bus Arbiration

2개 이상의 Device(Memory, I/O 혹은 SSD)가 System Bus에 사용을 요구할 경우 우선권을 누구에게 할당하는지에 대한 방식

 

 

1. Parallel Arbitration (PA) [병럴중재방식]

- Centralized PA

- Decentralized PA

 

 

2. Serial Arbitration/Daisy Chain (SA) [직렬중재방식]

- Centralized SA

- Decentralized SA

 

 

3. Polling [시간중재방식]

- H/W Polling

- S/W Poliing

 

 


 

I/O Device 접속 방식의 종류

 

ex) 본인이 손님 맞이 전 집에서 설거지를 하고 있는 상황.

 

 

Programmed I/O: 설거지를 하는 중간중간 손님이 왔는지 직접 나가 확인하는 방식.

- Memory Mapped I/O

- Isolated I/O

- CPU에게 큰 부담이가는 방식.

- Micro Processor로 코딩할 경우 많이 사용하는 방식.

 

 

Interrupt Driven I/O: 초인종 소리를 통해 설거지를 하고 있더라도 손님이 왔음을 알 수 있음.

- Multiple Interrupt

- Daisy Chain

- S/W Polling

- 외부의 데이터가 들어올 경우 CPU에 Controll Bus를 통해 알려줌. (신호가 계속 0이였다가 1로 바뀌면 데이터가 들어옴을 알고 Data Register로 가서 데이터를 CPU로 가지고옴)

- 대부분의 CPU가 해당 방식을 사용함.

 

 

I/O with DMA: 대리인 한명을 두고 손님이 올 경우 나에게 알려줌.

- DMA I

- DMA II

- DMA with I/O Bus

- DMA with I/O Processor

- CPU가 전혀 관여하지 않고 DMA Processor라는 대리인이 모든일을 처리함.


 

Read한 프로그램과 데이터의 처리하고 Write 하는가

 

High Level Language Program

- z = X + Y 

  1. X와 Y에 있는 값을 더해 Z에 저장.

 

 

Assembly Program

- Assembly Instruction: 항상 목적지는 앞(A), 출발지는 뒤(X)이다.

  1. LOAD: 메모리에 있는 데이터를 CPU에 있는 Register로 가져옴.
  2. ADD: 메모리에 저장되어있는 Y의 값을 A로 가져오는데 기존에 있던 A값을 더함.
  3. STOR: A에 있는 값을 Z(메모리의 위치)로 STOR한다.

 

 


컴퓨터의 전체적인 구성

 

 

 

 

 

 

Comments