고딩왕 코범석
컴퓨터 구조와 CPU 본문
컴퓨터 시스템은 기계적 장치들인 하드웨어와 이 하드웨어의 동작을 지시하고 제어하는 명령어 집합인 소프트웨어로 구성되어있다.
하드웨어
하드웨어는 중앙처리장치인 CPU, 기억장치인 RAM과 HDD, 입출력 장치들로 구성되는데 그림과 같이 구성되어 진다.
CPU
주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어한다. CPU는 비교와 연산을 담당하는 ALU(산술논리연산장치), 명령어의 해석과 실행을 담당하는 제어장치, 속도가 빠른 데이터 기억장소인 레지스터로 구성되어 있다.
산술논리연산장치(ALU)
산술연산(사칙연산)과 논리연산(AND, OR...)을 수행하며 연산에 필요한 데이터들을 레지스터에서 가져오고, 연산 결과를 다시 레지스터에게 보내는 역할을 한다.
제어장치(CU)
명령어를 순서대로 실행할 수 있도록 제어하는 장치이며, 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보내며, 받은 신호들에 대해 다음 수행할 동작을 결정한다. (제어 버스와 연결, 양방향)
레지스터
고속기억장치이며, 명령어의 주소, 코드, 연산에 필요한 데이터, 연산 결과등을 임시로 저장하는 곳이다. 용도에 따라 범용 레지스터와 특수목적 레지스터로 나뉜다.
- 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
- 특수 목적 레지스터 : 특별 용도의 레지스터(밑에 정리)
특수 목적 레지스터
- MAR(메모리 주소 레지스터) : 읽기와 쓰기 연산을 수행할 주기억장치의 주소 저장
- 주소 버스(단방향)와 연결
- PC(프로그램 카운터) : 다음에 수행할 명령어 주소 저장
- IR(명령어 레지스터) : 현재 실행중인 명령어 저장
- MBR(메모리 버퍼 레지스터) : 주기억장치에서 읽어온 데이터 혹은 저장할 데이터를 임시로 저장
- 데이터 버스(양방향)와 연결
- AC(누산기) : 연산 결과를 임시 저장
CPU 동작과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옴
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어장치는 1 ~ 3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어
명령어 세트
CPU가 실행할 명령어의 집합을 의미하며, 연산 코드와 피연산자로 구성된다. 연산 코드는 연산, 제어, 데이터 전달, 입출력 기능을 가지고 피연산자는 주소, 숫자/문자, 논리 데이터 등을 저장한다. CPU는 프로그램 실행을 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다.
명령어 사이클
CPU가 메모리로부터 프로그램 된 한개의 기계어 명령어를 가져와 어떠한 동작을 요구하는지를 결정하고 명령어가 요구하는 동작을 수행하는 연속적인 동작 과정. 즉, 명령어를 꺼내고 이를 실행하기위한 연속적인 동작 과정이다.
사이클동안 CPU에 사용되는 회로는 다음과 같다.
- PC : 다음에 실행할 명령어에 대해 메모리 주소 추적
- MAR : 다음에 실행할 명령어의 메모리 주소 보관
- MBR : 메모리로부터 fetch되어 CPU가 처리할 준비가 된 데이터 혹은 메모리에 저장되어 대기중인 데이터를 보관하는 양방향 레지스터
- IR : 메모리로부터 현재 실행할 명령어를 일시적으로 보관하는 영역
- CU : 명령어를 인출 / 해독 / 실행을 위한 제어 신호를 타이밍에 맞춰 발생
- ALU : 산술 or 논리 연산 수행
명령어 기본 사이클
명령어 인출(fetch) 사이클 + 명령어 실행(execution) 사이클
명령어 인출 사이클
- 명령어가 저장된 주소 지정
- MAR <- PC (PC에 저장된 명령어 주소를 MAR로 전송)
- MAR 번지 메모리 명령어를 MBR로 전송, PC가 다음번 명령어 주소를 가리키도록 준비
- MBR <- M[MAR]
- PC <- PC + 1
- 인출한 명령어를 IR로 전송
- IR <- MBR
명령어 실행 사이클
IR로 가져온 명령어가 지시하는 내용에 따라 수행되는 연산이 달라진다.
- 명령어 해독
- opcode 해독 : 전달받은 opcode를 해독하여 동작을 구현하는 회로로 신호를 보냄
- operand 해독 : 유효 주소를 얻는 과정
- 명령어 실행
- 명령어 실행에 필요한 CPU 내/외부 제어신호를 발생시킴
인터럽트와 인터럽트 사이클
CPU에게 예외 상황이 발생했다고 알려주는 것. 발생한 인터럽트를 검사하고 그걸 처리할 인터럽트 서비스 루틴을 호출하는 단계(인터럽트를 처리하는 프로그램 == 인터럽트 핸들러)
기억장치
프로그램, 데이터, 연산의 중간 결과를 저장하는 장치이며, 주기억장치와 보조기억장치로 나뉜다.
주기억장치는 RAM과 ROM이 해당되며, 실행중인 프로그램과 같은 프로그램에 필요한 데이터들을 일시적으로 저장하는 장소이다.
보조기억장치는 하드디스크 등을 말하며 주기억장치에 비해 속도는 느리지만 많은 자료를 영구적으로 보관할 수 있는 장점이 있다.
시스템 버스
하드웨어 구성 요소들을 물리적으로 연결하는 선을 의미하며 용도에 따라 데이터 버스, 주소 버스, 제어 버스 로 나뉜다.
데이터 버스는 중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로이다. 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나, 중앙처리장치의 연산 결과를 기억장치와 입출력장치로 보내는 양방향 버스이다.
주소 버스는 데이터를 정확히 실어 나르기 위해 기억장치의 주소를 전달하는 통로이다. 중앙처리장치가 주기억장치나 입출력장치로 기억장치의 주소를 전달하기 때문에 단방향 버스이다.
주소 버스와 데이터 버스는 모든 장치에 공유된다. 때문에 이를 제어할 수단이 필요한데 이를 제어 버스가 담당한다. 제어 버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로이며, 제어 신호 정류에는 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등이 있다. 제어 버스는 읽기와 쓰기 동작을 모두 수행하므로 양방향 버스이다.
컴퓨터는 기본적으로 읽고 처리한 뒤 저장하는 과정으로 이루어진다. 이 READ -> PROCESS -> WRITE 과정을 진행하면서 끊임없이 RAM과 소통하며, 이 때 운영체제가 64비트라면 CPU는 RAM으로부터 데이터를 한번에 64비트씩 읽어온다.
'Computer Science > Computer Architecture' 카테고리의 다른 글
메모리와 캐시 (0) | 2021.12.17 |
---|