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 가 어떻게 작동하는지 전혀 감도 못잡던 시절에도
게임을 출시해서 돈을 벌고 했으니 말이다.