diff --git a/_posts/fast/2024-10-25-os.md b/_posts/fast/2024-10-25-os.md index 416916f..e6dd445 100644 --- a/_posts/fast/2024-10-25-os.md +++ b/_posts/fast/2024-10-25-os.md @@ -146,7 +146,7 @@ tags: ["컴퓨터", "하드웨어", "CPU"] 1 0000 0010 (2) ``` -여기서 최상위비트 1은 캐리이다. +여기서 최상위비트 1은 캐리이다. 결과값이 음수라면 플래그라는 곳에 음수 부호 플래그가 저장된다. ### 1-1-3. 그 외 진법 @@ -535,6 +535,28 @@ ALU의 입력엔 단순히 "계산을 하기 위한 필요한 정보"가 입력 ### 2-1-2. 제어장치 **제어장치**는 제어신호를 발생시키거나 받아서 제어하고, 명령어를 해석하는 장치이다. +제어장치의 입력과 출력엔 아래와 같다: + +* 입력 + * 플래그 레지스터로 부터 -> 플래그 + * 명령어 레지스터로 부터 -> 해석할 명령어 + * 다른 장치로 부터 -> 제어신호 +* 출력 + * 제어신호 -> 레지스터 또는 ALU 등의 CPU 내부 + * 제어신호 -> 메모리 또는 입출력장치 등의 CPU 외부 (제어 버스) + +자주 등장하는 용어인 **제어 신호**부터 설명을 하자면, 제어 신호는 이름 그대로 제어를 위한 특별한 신호를 의미한다. +CPU 내부로 전달되는 제어 신호는 레지스터 간 데이터 전송, ALU엔 어떠한 연산을 처리하라 등의 제어 신호이며, CPU 외부로 전달되는 제어 신호는 메모리 접근, 입출력 장치 인터럽트 등의 제어 신호를 보낸다. +외부로 전달될 땐 제어 버스라는 통로로 이동되는데, 이는 추후에 따로 설명할 예정이다. + +또한 추후 설명할 외부에서 인터럽트 등의 제어 신호가 제어장치로 들어오는 경우도 있고, 이 또한 제어 버스를 통한다. + +이 처럼 주요 기능중 하나인 제어 신호를 통한 제어가 있고, 다른 주요 기능인 **명령어 해석** 또한 제어 장치에서 처리된다. + +메모리에서 명령어를 가져올때(인출할때) 메모리 레지스터라는 레지스터에 우선 가져오고, 제어장치에서 명령어를 해석할때 이 레지스터에서 인출한다. +또한, 플래그 레지스터에서 부가적인 정보 또한 사용하여 명령어를 해석하고 실행한다. + +명령어의 구조는 앞서 설명했으며, 해석 과정은 추후 설명할 예정이다. ### 2-1-3. 레지스터