카테고리 없음

[혼공컴운] 2주차

이서찬 2025. 1. 18. 15:02

04-1: ALU와 제어장치

지난 시간까지는 CPU가 계산 담당의 ALU, 명령어 읽고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터로 구성되어 있음을 알 수 있었다. 데이터가 저장되는 방식도 알 수 있었다. 명령어가 오퍼랜드 필드와 연산 코드 필드로 나뉨을 알 수 있었고 연산 코드의 종류에 데이터 전송, 산술/논리연산, 제어흐름변경, 입출력제어가 있음을 알 수 있었다. 

 

이번 시간에는 ALU와 제어장치의 원리를 자세히 알아볼 수 있을 것 같다.

ALU는 레지스터를 통해 피연산자를 받아들이고 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. 

그렇다면 ALU가 계산을 한 결과값을 어떻게 처리할까? 결괏값을 레지스터에 보냄과 동시에 결과값과 관련된 중요한 참고 정보를 플래그 레지스터에 보낸다고 한다. 

* 궁금증: 회로의 원리와 구조 - 어떻게 회로로 덧셈과 뺄셈, 오버플로우 검출 등이 가능할까?

 

제어장치는 어떤 입력을 받아들이고 출력을 내놓을까?

제어장치는 클럭 신호를 받아들이고, 명령어 레지스터로부터 저장된 명령어를 받아들여 해석하고, 또 플래그 레지스터로부터 이와 관련된 중요 정보를 받아들인다. 그리고 이러한 정보들로부터 명령어 해석을 하고, 이에 맞게 제어 신호를 내보내는데 레지스터에 보내는 거일 수도 있고 제어 버스를 통해 입출력장치나 메모리에 보내는 제어신호일 수도 있을 것이다. 

처음에는 서로서로 지시와 신호를 주고받는 것 같아 다소 복잡하게 느껴졌지만 역할을 구분하여 인식하려고 하니 정리되는 것 같았다.

 

04-2 레지스터

이전에 개략적으로 나타내진 cPU의 작동 원리의 구조도를 보았을때 의아했던 점은 어떤 부분은 굉장히 세부적인데 비해 메모리 등에 명령을 보내는 것과 같은 단계는 굉장히 간단하게 설명된 것 같다는 점이었다. 그런데 이번 차트에서 세부적으로 어떻게 프로그램을 읽고 명령어를 실행하게 되는지를 공부할 수 있었다. 프로그램 카운터에 실행할 명령어의 주소가 저장되고 그 메모리를 메모리 주소 레지스터에 저장한 다음 실제로 불러온 다음에는 메모리 버퍼 레지스터에 그 값을 저장했다가 명령어를 실행하게 된다는 것이다. 그리고 다양한 주소 지정 방식들, 스택 레지스터, 베이스 레지스터에 대해서도 알 수 있었다. 

 

 

04-3 명령어 사이클과 인터럽트

명령어 사이클은 앞서 살펴봤던 명령어를 제어장치가 불러오는 과정과 실제 그 명령어를 실행하는 과정으로 나뉘게 된다.

하지만 때때로 입출력 장치 등으로부터 CPU가 급히 처리해야하는 신호가 생기ㅣㄹ 수도 있을 것이다.이러한 상황을 대비한 긴급 신호가 입터럽트이고 인터럽트 사이클이 메모리에 저장되어 있어 인터럽트 신호를 보낸 장치의 종류에 맞게 해당 사이클이 실행된다고 한다. 때때로 처리해야 할 긴급한 상황을 처리하는 체계적인 방법을 정리할 수 있었던 것 같다. 

 

 

 

05-1 빠른 CPU를 위한 설계기법

코어는 명령어를 실행할 수 있는 '하드웨어 부품'

스레드는 '명령어를 실행하는 단위'

 

그리고 스레드는 레지스터 세트를 여러 개 둠으로써 구현가능한 하드웨어적 스레드와 소프트웨어적으로 프로그램 사이를 왔다갔다 할 수 있는 소프트웨어적 스레드로 나뉨을 알 수 있었다.

 

 


확인문제!

125p 확인문제2번

1번: 플래그 레지스터

2: 프로그램 카운터

3: 범용 레지스터

4:명령어 레지스터 이다.

 

155p 확인문제 4번

 

빈칸에 알맞은 말은 코어죠!