-
[CS] Computer ArchitectureCS 2022. 10. 24. 15:43728x90
cpu는 연산장치, 제어장치, 레지스터 3가지로 이뤄져 있다.
연산 장치
산술 & 논리 연산 수행 ( 산술 논리 연산 장치라고도 불린다. )
레지스터로부터 연산에 필요한 데이터를 가져오고, 연산의 결과를 보낸다.
제어 장치
제어 장치는 명령어를 순서대로 실행할 수 있도록 제어하는 장치
주기억장치로 부터 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억, 연산, 입출력 장치로 보낸다.
또한, 이들 장치가 보낸 신호를 받아 다음에 수행할 동작을 결정한다.
레지스터
레지스터는 메모리 계층구조의 최상위에 존재하는 고속 기억장치이다.
명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장하는데,
즉, cpu의 데이터와 명령을 빠르게 허용, 저장 전달하는데 사용된다.
용도에 따라 범용, 특수목적 레지스터로 구분된다.
범용 레지스터 : 연산에 필요한 데이터나 연산 결과 임시 저장
특수목적 레지스터 : 특별한 용도로 사용하는 레지스터
cpu에 따라 레지스터 개수 및 크기가 다르다.
특수 목적 레지스터 중 중요한 것들
- MAR ( 메모리 주소 레지스터 ) : 읽기, 쓰기 연산을 수행할 주기억장치 주소 저장
- 이 말은, cpu가 데이터를 읽거나 쓰려는 메모리 주소를 일시적으로 저장한다는 의미
- MBR ( 메모리 버퍼 레지스터 ) : 주기억장치에서 읽어온 데이터 또는 저장할 데이터 임시 저장
- 이 말은, 메모리에 읽거나 쓰려는 데이터 또는 명령어를 일시적으로 저장한다.
- 여기에 배치된 명령어는 IR로 전송, 데이터의 내용은 AC 또는 IO레지스터로 전송
- PC ( 프로그램 카운터 ) : 다음에 수행할 명령어 주소 저장
- IR ( 명령어 레지스터 ) : 현재 실행 중인 명령어 저장
- AC ( 누산기 ) : 연산 결과 임시 저장
CPU 동작 과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어옴
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어
명령어 세트
→ cpu가 실행할 명령어의 집합
연산 코드( 실행할 연산 ) + 피연산자 ( 필요한 데이터 또는 저장 위치 )
연산 코드는 연산, 제어, 데이터 전달, 입출력 기능을 가짐
피연산자는 주소, 숫자/문자, 논리 데이터 등을 저장
CPU는 프로그램 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출 - 해독 - 실행함
레지스터의 동작과정은
- fetch - 사용자 명령과 주 기억장치에 저장된 프로그램을 cpu프로세서로 가져온다
- decode - 가져온 명령을 해석한다
- execute - cpu에 의해 생성된 결과를 메모리에 저장한다.
명령어 사이클
- 주기억장치에서 한번에 하나의 명령어를 인출해 실행하는데 일련의 활동
- 인출 / 실행 / 간접 / 인터럽트 사이클로 나눠짐
- 주 기억장치의 지정된 주소에서 하나의 명령어를 가져오고, 실행 사이클에서 명령어 실행 → 완료되면 다음 명령어에 대한 인출 사이클 시작
인출 , 실행 사이클에 의한 명령어 처리 과정
인출에서 가장 중요한 부분은 PC값 증가
인출 과정 ( 인출 사이클 ) : fetch cycle
- PC에 저장된 주소를 MAR로 전달
- MAR의 주소에서 명령어 인출 → 명령어를 MBR에 저장
- PC 증가
- MBR에 저장된 내용을 IR에 전달
인출 과정 → 인출 사이클을 통해 IR에 가져온 명령어는 ( 명령어 + 주소 )로 이뤄져 있음
실행 과정 ( 실행 사이클 ) : execute cycle
실행 과정 예시 Addr - add 명령어 연산
- 이미 인출되고 명령어만 실핸하면 되기에 PC증가 필요 없음
- T0은 IR에 MBR의 값이 이미 저장된 상태를 의미
- AC에 MBR 더하기
간접 사이클
- 실행 사이클 전에 일어난다
- IR에는 인출사이클 뒤에 명령어 + 주소 형태 명령어가 있는데 오퍼랜드를 참조해 명령어가 인수로 가지는 데이터를 가져올수 있다
- 해당 주소를 MAR로 가져와 기억장치 주소를 MBR을 거쳐 IR의 오퍼랜드 부분에 넣어준다
오퍼랜드 = 피연산자
인터럽트 사이클
- 실행 사이클 후에 일어난다.
- 인터럽트 신호라는 것이 들어 왔는지 아닌지를 판단하는 사이클이다.
- 인터럽트 신호 x → 인출 사이클 시작
- 인터럽트 신호 o → 마이크로 연산이 진행된다.
'CS' 카테고리의 다른 글
[CS] 메세지 큐 (0) 2022.12.27 [CS] GC 알고리즘 (0) 2022.12.26 [CS] 기술면접 - JVM 메모리 구조 (0) 2022.12.26 [CS] - Computer Architecture (0) 2022.10.24 [CS] - Computer Architecture (0) 2022.10.24 - MAR ( 메모리 주소 레지스터 ) : 읽기, 쓰기 연산을 수행할 주기억장치 주소 저장