WorkReport_4

CPU ( Central Processing Unit)

지난번에 , HowCpuExcuteProgram

공부할 시절에는 그저 추상화된 컴포넌트로 존재했던 CPU 에 대해서 배웠다.

( 확실히 한번 다 돌고나서 다시 내용을 보면 이해도의 깊이가 달라질 것 같다. 서두르자 )

4 bit CPU 를 기준으로 예를 들며 강좌는 진행되었는데,

4 bit 라는 말은, 4개의 Register 가 CPU 내부에 있다는 의미다.

안에는 ALU , Clock 등이 있다.

CPU 는 지휘자 처럼 각 유닛들이 잘 연동되어 의도대로 ( 프로그램 대로 ) 작동하도록 한다.

CPU’s Phase

CPU 는 3개의 Phase 를 순회하며 반복한다. 그리고 이 페이즈를 모두 다 돌았을 때

1 의 Clock Speed 를 가진다고 한다. 그리고 바로 첫 페이즈 (Fetch) 부터 다시 순회하기 시작한다.

그리고 1 초당 이 페이즈가 도는 횟수를 구하면 그게 헤르츠다 ( 주파수 , 빈도.. 등 으로 설명 )

요새 컴퓨터가 보통 기가 헤르츠를 쓰는 것을 감안 할 때, 매우 빠른 속도로 반복한다고 생각하면 되겠다.

Fetch Phase

우선 CPU 내부의 Instruction Adress Register 에 있는 값과 같은

램에서 주소값으로 가지는 데이터를 Fetch 해와서 , Instruction Register 에 넣어준다.

Deocde Phase

이제 IR 에 가져온 , Instruction 이 무엇을 뜻 하는지 해석하는 페이즈다.

가져온 8 비트 값 중에 , 앞의 4비트를 OPCODE 라고 한다. 이 OPCODE 를 기반으로 ,

미리 저장된(혹은 물리적으로 구현된) INSTRUCTION Table 에 해당하는 Instruction 을 해석해낸다.

그리고 가져온 8 비트 중 뒤의 4 비트는 Instruction 마다 다르게 ,

Load_A 라는 Instruction 에서는 Ram Adress 를 의미한다.

Excute Phase

Ram 에 연결된, Write Enable 과 Load Enable 중 해당하는 회로에 HIGH 신호가 가면 ,

위에서 구한 Ram Adress ( 4비트 값 ) 의 메모리를 Write or Load 한다.

Load_A Instruction 였다면, 현재 Register A 에 대한 Write Enable 에 High 를 보내고

위에서 메모리에서 구해온 값을 Regist A 에 저장한다 .

후기

오늘 건 그리 놀라운 내용은 없었지만, 여전히 흥미롭긴 했다.

이제는 추상화라는 것을 밥먹듯이 하는 내용에 접근한 것 같기도하고 ㅎㅎ

결국 싸잡아서 컴퓨터라고 부르기도 하니.. 끝내주는 추상화인 셈이다.

내가 CPU 가 어떻게 작동하는지 전혀 감도 못잡던 시절에도

게임을 출시해서 돈을 벌고 했으니 말이다.

개발자 공부 방향 잡기

Published on November 24, 2023

git branch name on windows and linux

Published on November 19, 2023