CS 공부
CPU의 작동 본문
CPU의 구성요소
연산 장치
산술 연산과 논리 연산을 수행한다.
연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보낸다.
제어 장치
명령어를 순서대로 실행할 수 있도록 제어한다.
레지스터 사이의 데이터 전송을 감시하고 ALU(연산 장치)의 동작을 지시하는 장치
전체 컴퓨터 시스템의 작동을 통제 지시하는 장치로, 주기억장치에서 적절한 순서로 명령을 꺼내고, 각 명령을 해석하여 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치, 기타 부분으로 적절한 신호를 보내는 장치이다.
기억 장치에 축적되어 있는 일련의 프로그램 명령을 순차적으로 꺼내 이것을 분석 해독하여 각 장치에 필요한 지령 신호를 주고, 장치 간의 정보 조작을 제어하는 역할을 수행한다.
레지스터
고속기억장치로 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.
중앙처리장치 종류에 따라 사용할 수 있는 레지스터 개수와 크기가 다르다.
용도에 따라 범용 레지스터와 특수목적 레지스터로 구분된다.
범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장한다.
특수목적 레지스터 : 특별한 용도로 사용하는 레지스터이다.
주요 특수 목적 레지스터
MAR(메모리 주소 레지스터) : 읽기와 쓰기 연산을 수행할 주기억장치 주소를 저장한다.
PC(프로그램 카운터) : 다음에 수행할 명령어 주소를 저장한다.
IR(명령어 레지스터) : 현재 실행 중인 명령어를 저장한다.
MBR(메모리 버퍼 레지스터) : 주기억장치에서 읽어온 데이터나 저장할 데이터를 임시 저장한다.
AC(누산기) : 연산 결과를 임시 저장한다.
CPU의 기본기능
Fetch(인출) : 메모리상의 프로그램 카운터가 가리키는 명령어를 CPU로 인출하여 적재.
Decode(해석) : 명령어의 해석. 이 단계에서 명령어의 종류와 타겟 등을 판단한다.
Execute(실행) : 해석된 명령어에 따라 데이터에 대한 연산을 수행한다.
Writeback(쓰기) : 명령어대로 처리 완료된 데이터를 메모리에 기록한다.
CPU 동작과정
1. 주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
4. 제어장치는 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
명령어
명령어는 실행할 산술·논리 연산의 동작을 명시하는 문장으로, 어떤 작업을 수행하는 명령어 집합이 프로그램
연산 부호(OPCode or operation code)
프로세서가 실행할 동작인 연산을 지정
산술연산, 논리연산, shift, 보수 등 연산정의
연산부호가 n비트면 최대 2^n개 연산가능
피연산자(operand)
연산할 데이터 정보 저장
데이터는 레지스터나 메모리 가상기억장치 입출력장치등에 위치할 수 있는데 보통 데이터 자체보다는 데이터의 위치 저장
명렁어 실행 과정(명령어 사이클)
CPU는 프로그램을 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다.
CPU가 주기억장치에서 한번에 하나의 명령어를 인출하여 실행하는데 필요한 일련의 활동을 명령어 사이클이라고 한다. 명령어 사이클은 인출/실행/간접/인터럽트 사이클로 나누어진다.
인출 사이클(fetch cyle)
메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어를 실행하려고 프로그램 카운터를 증가시킴 인출 사이클에 소요되는 시간을 명령어 인출 시간이라고 함
실행 사이클(execution cycle)
인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어 실행
실행 사이클에서 소비되는 시간을 실행 시간이라고 함
간접 사이클(indirect cycle)
간접 주소 지정 방법을 사용하는 실행 사이클은 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한 번 더 읽어 옴
인터럽트 사이클(interrupt cycle)
인터럽트는 프로세서가 프로그램을 수행하는 동안 컴퓨터 시스템의 내부나 외부에서 발생하는 예기치 못한 사건
프로세서는 실행 사이클을 완료한 후 인터럽트 요구가 있는지 검사. 인터럽트 요구가 없으면 다음 명령어를 인출하고, 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 주소(프로그램 카운터) 값을 스택이나 메모리의 0번지와 같은 특정 장소에 저장. 프로그램 카운터에는 인터럽트 처리 루틴의 시작 주소를 저장해
두었다가 인터럽트 처리를 완료하면 중단된 프로그램으로 복귀하여 계속 수행
인출 사이클 과정
간접 사이클 과정
인터럽트 사이클 과정
인터럽트 명령어
1) 현재 실행중인 프로그램을 중단하고 다른 프로그램의 실행을 요구하는 명령어
2) 시스템 처리효율 향상
3) 프로그램의 실행 순서를 바꾸어가면서 다중 프로그래밍에 사용
4) 예상치 못한 사용자 입력, 갑작스런 정전, 컴퓨터 시스템에서 긴급 요청, 잘 못된 명령어 수행, 입출력 작업완료와 같은 상황을 시스템이 적절히 처리하는 데 필요
5) 사용자가 별도로 조치를 할 필요 없이 프로세서와 OS가 처리
6) 외부장치의 동작과 자신의 동작을 조정하는 수단으로 사용
7) 인터럽트 목적으로 사용하는 제어버스는 인터럽트 요청회선(IRC, interrupt ReQuest line)
인터럽트 요청회선
1) 키보드에서 입력에 발생 했을때만 프로세서에 통보하여 처리 프로세서가 이벤트 발생여부 일일이 감시안해도 됨
2) 프로세서가 외부장치 감시 점검 x 이므로 그동안 다른 연산 수행 하여 프로세서 효율 높이는 것 가능
3) 인터럽트 요청 신호에 따라 인터럽트 처리 프로그램 수행
4) 단일 회선과 다중 회선으로 연결
위에 보이듯이 단일 회선은 모든 장치를 하나의 회선으로 연결해놓아서 인터럽트 요청한 장치 판별 기능 필요
그 장치 판별 기능중 하나가 인터럽트 번호(장치에 부여된 고유의 번호 윈도우의 경우 IRQ라고 부름)
다중회선은 고유의 회선을 연결해놓아서 바로 판단 가능
프로그램은 컴파일러 등을 이용하여 0과 1로 이진화 된 기계 명령어로 변환해야 컴퓨터가 이해할 수 있음
(a) 인터럽트 발생전
프로그램 A 실행 PC는 현재 명령어 가리킴
(b) 인터럽트 발생
현재 명령어를 종료 -> 레지스터의 모든 내용을 스택(또는 프로세서 제어 블록)으로 전달 ->PC에는 인터럽트 처리 프로그램(프로그램B)의 시작 위치를 저장 -> 제어를 넘긴후 프로그램 B 실행
(c) 인터럽트 처리 후
스텍 영역에 있던 내용 레지스터에 다시 저장 -> 프로그램A가 다시 시작하는 위치를 저장 -> 중단 했던 프로그램 A를 재실행
'CS공부 > 컴퓨터 구조' 카테고리의 다른 글
ARM (0) | 2021.07.29 |
---|---|
패리티 비트 & 해밍 코드 (0) | 2021.07.29 |
고정 소수점 & 부동 소수점 (0) | 2021.07.29 |
캐시 메모리 (0) | 2021.07.29 |
컴퓨터의 구조 (0) | 2021.07.26 |