본문 바로가기

카테고리 없음

컴퓨터 구조 : ALU와 제어 장치

728x90

📗 ALU

 

ALU가 받아들이는 정보에는 피연산자와 제어신호가 있는데.

레지스터로부터 피연산자를 받고 제어장치로부터 제어신호(수행연산)를 받는다.

 

연산의 결과 값은 컴퓨터가 이해할 수 있는 0과 1로 표현된 정보로 구성된

문자, 숫자, 혹은 주소이다. 이 결과 값은 레지스터에 저장된다.

 

✔ 왜 결과값을 레지스터에 저장할까?

CPU가 레지스터에 액세스하는 속도가 메모리에 엑세스하는 속도보다 빠르기 때문이다.

레지스터에 결과를 저장하고 메모리에 기록하거나 결과 값을 가지고 다른 레지스터에

저장된 연산을 수행한다.

 

✔ 플래그는 무엇인가?

ALU가 내보내는 또다른 정보로는 플래그가 있는데 플래그란

컴퓨터에서 무언가를 기억하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로

프로그램에 사용되는 미리 정의된 비트를 말한다. 플래그가 나타낼 수 있는 정보는 1비트 정보로

(상태가) ~ 이다, 아니다 정도가 되겠다.

ALU가 내보내는 플래그에는 연산 결과에 대한 부가 정보가 담겨있다.

부호 플래그 : 연산한 결과의 부호를 나타낸다.
제로 플래그 : 연산 결과가 0인지 아닌지의 여부를 나타낸다.
캐리 플래그 : 연산 결과 올림수나 발림수가 발생했는지를 나타낸다.
오버플로우 플래그 : 오버플로우가 발생했는지를 나타낸다.
인터럽트 플래그 : 인터럽트가 가능한지를 나타낸다.
슈퍼바이저 플래그 : 모드를 나타낸다. 커널모드인지, 사용자모드인지 구분할 수 있다.

 

해당 정보들 뿐만 아니라 ALU가 내보낸 연산의 결과가 결과를 담을 레지스터에 비해

너무 크다면 플래그 레지스터에 담기도 한다. 이를 '오버 플로우'라고 한다.

 

✔ '오버플로우'시 다른 레지스터도 많은데 왜 플래그 레지스터에 저장할까?

연산 결과를 플래그 레지스터에 담는것이 아니다.

연산 결과의 크기가 너무 커서 레지스터에 담지못하는 상태인 '오버플로우' 상태가 될 때,

프로그램이 이를 감지하고 오버플로우 플래그를 플래그 레지스터에 저장한다.

이는 프로그램이나 운영체제로 하여금 오버플로우가 발생했다는 정보를 알리기 위함이고

프로그램이나 운영체제등이 이 정보를 활용하여 적절한 조치를 취할 수 있도록 한다.

 

📗 제어장치

 

제어장치가 받아들이는 정보는 다음과 같다.

 

💻 클럭

컴퓨터의 모든 부품들을 일사불란하게 움직일 수 있게 하는 시간 단위
컴퓨터 부품의 기본 연산 속도를 나타낸다.

 

✔ 오버 클럭?

사용자가 임의로 클럭을 끌어올리는 것을 말한다. 반대 말로는 언더 클럭이 있다.

순정 상태의 컴퓨터보다 연산속도가 더욱 빨라지지만 관리가 제대로 되지 않으면

컴퓨터의 수명이 줄어들거나 회로가 망가질 수도 있다.

 

💻 해석할 명령어

제어장치는 명령어 레지스터로 부터 해석할 명령어를 받아들인다.

그리고 명령에 알맞는 제어신호를 내보낸다.

 

💻 플래그

명령어 레지스터로부터 받은 명령어를 해석하는데 

부가적인 정보도 필요하기 때문에 플래그도 받아들인다.

 

💻 제어신호(받음)

제어장치만이 제어신호를 발생시키는 것이 아니다.

입출력 장치를 비롯한 주변 장치들도 CPU처럼 제어신호를 발생시킨다.

주변 장치로부터 제어장치는 제어신호를 받게 된다.

 

💻 제어신호 (내보냄)

제어장치가 내보내는 제어신호는 다음과 같다.

 

 

 

 

학습 출처 : https://www.youtube.com/watch?v=kFWP6sFKyp0&t=13096s

728x90
반응형