1. 프로세서의 구성과 동작
컴퓨터의 세가지 핵심 장치 : 프로세서(cpu), 메모리, 입출력장치I/O
프로세서의 구성요소
- ALU : 기본 연산 수행 (기본적으로는 정수연산, 요즘엔 실수연산도 하기도 하고)
- 제어장치 : 관제센터. 실제 계산 외 처리들 다함. 메모리에서 명령어 가져와 해독 후실행하고 장치들 제어
- 레지스터 세트 : 빠른 미니 임시 저장소.
- 특수 레지스터 : 정해진 용도로만 쓰임
- 범용 레지스터
버스 : 이들 내부 또는 이들 사이에 주소, 데이터, 제어 신호를 전달하기 위해 연결해주는 통로
내부 버스 : 프로세서 내부
시스템 버스(프로세서 외부) 종류 - 주소 들고 가서 데이터 가져온다~
주소버스 : 프로세서→메모리
데이터버스 : 메모리<~>프로세서
제어버스 : 주로 프로세서→메모리지만 100%는 아님
폰 노이만 구조 : 프로그램과 데이터과 모두 메모리에 올라와있어야 cpu가 실행함
주사이클 = 기계주기 = 프로세서 명령 실행 사이클
fetch 인출
제어장치가 실행할 명령어 한줄을 메모리에서 IR(명령 레지스터)로 가져온다.
그 후 PC(프로그램 카운터)의 주소가 다음 명령어 주소로 변경됨
decode 해독
가져온 명령어를 해독
필요한 데이터가 있는 경우 메모리에 가서 가져옴 - 범용 레지스터 등에 저장
execute 실행
준비끝. 실행
반복
프로세서는 명령을 더 작은 마이크로 명령어들로 나누어 실행한다.
2. 산술 논리 연산 장치 (ALU)
주로 정수 연산. 부동소수(실수)연산은 FPU. 최근에는 이것까지 다 함
arithmetic : + - * / ++ -- 보수neg
logical : and or not xor shift
AC누산기 - ALU내부에 있으며 ALU와 밀접한 관련이 있는 레지스터
shift 연산 : 산술연산의 속도 높임. 곱셈을 시프트와 덧셈으로.
- arithmetic
- ASL : overflow체크 필수(MSB와 MSB바로 옆 수가 다를 경우 overflow). 0으로 채움
- ASR : 부호비트 유지 주의(음수는 1, 양수는 0으로 채움)
- logical
- LSL : 0으로 채움
- LSR : ‘’
- rotational
- ROL : 회전 시프트
- ROR : ‘’
- ROLC : 캐리도 함께 회전 시프트
- RORC : ‘’
- arithmetic
논리 연산 예) unset0으로 만들고 싶을 때 and, set1로 만들고 싶을 때 or 활용
**정수 계산은 항상 MSB(부호비트)부터 볼 것!!
3. 레지스터
메모리 계층의 최상위(cpu내부). 가장 빠른 메모리
cpu가 사용하는 데이터와 명령어를 빠르게 읽고 저장
종류
AC누산기 : ALU내부!! 피연산자 제공, 결과 저장 등
PC프로그램카운터 : 명령어가 인출되면 값을 명령어 크기단위 길이만큼 증가
IR명령 레지스터
IX인덱스 레지스터 : 배열 인덱스 저장용
SP스택 포인터 : 스택의 다음 쌓을 위치 주소 (후입선출)
FR플래스(상태) 레지스터 : cpu의 현재상태.
- C 캐리비트
- S 부호비트
- Z zero비트 : 결과가 0이면 Z=1. 숫자 전체 NOR연산
- V overflow비트 : C4최종 캐리 =/= C3직전 캐리이면 overflow(표현 범위 벗어남) - 정상연산 캐리비트와 혼동 주의
메모리 데이터(버퍼) 레지스터 - ~여기에 저장(일시)
메모리 주소 레지스터 - 메모리의 여기가서 데이터를 가져와서~
입출력 주소 / 버퍼 레지스터 - 입출력용
common bus
레지스터들은 공유버스 하나에 여러개가 연결되어있어서 서로 신호를 주고받는다!
데이터를 내보내려는 레지스터에게 Nx1 MUX로 선택해 공유버스 사용하도록 하고
데이터를 받아야하는 레지스터를 2xN 디코더로 하나만 선택해 load하도록 한다.
- 레지스터 전송 명령
- LOAD : 메모리→레지스터 데이터 로드
- STORE : 레지스터→메모리 데이터 저장
- MOVE : 레지스터 간 데이터 왔다갔다
4. 컴퓨터 명령어
명령어 형식 - 주소지 적을수록 같은 동작에 대한 명령어가 길어짐.
- 0-주소 명령어 : 저장장소가 묵시적 지정(스택. pop, push, 역표현)
- 1-주소 명령어 : 나머지 하나를 AC로 묵시적 지정
- 2-주소 명령어 : 한쪽 주소에 결과 덮어쓰기 - 원본 훼손. 복사이동 후 사용 필요
- 3-주소 명령어 : 오퍼랜드 2개와 결과 저장위치까지 - 프로그램 짧아지고 명령어 해독하는 컴파일러 복잡해짐
니모닉
명령어 형식 설계 기준
짧을수록 좋음
모든 연산이 표현 가능하도록 형식에 여유가 있어야 함. 명령어 추가 가능하도록. opcode를 많이 담을수록 다양한 연산 표현 가능
주소 필드(operand)의 비트수 - 잘게 나누면 더 많은 공간 필요(?)
opcode과 주소필드는 tradeoff 관계
명령어 종류
- 데이토 이동 명령 : load store move - 복사
- 2항 연산 : operand 2개 - 산술 및 논리 연산
- 단항 연산 : operand 1개 - shift, inc++, neg, not 등
- 비교, 조건분기 명령 : (상태비트)조건 충족 시 메모리주소로 branching분기
- procedure프로시저(함수!!) 호출 명령 : 프로시저 작업 완료 후 원래 다음 명령주소로 복귀 - 복귀주소 저장 방법 중 가장 좋은 건 스택
- loop루프 제어 명령 : 카운터 소유, 종료조건 검사
- 입출력 명령
5. 주소 지정 방식
- 주소 지정 모드 : 주소필드 해석 규칙
종류
직접 값(즉시 지정) 모드
묵시적 주소 지정 : push나 pop의 스택, RET복귀, AC 활용 등
직접 주소 지정
간접 주소 지정 - 시간 소요
레지스터 주소 지정 - 피연산자 데이터가 레지스터에 이미 들어와있음
레지스터 간접 주소 지정 : 필드 → 레지스터 → 메모리
변위 주소 지정
여기부터는 특정한 용도가 있는 방법
EA유효주소 = 실제 주소
인덱스 주소 지정 : 배열에 사용. 인덱스가 변위
상대 주소 지정 : 변위operand + PC
베이스 주소 지정 : 변위operand + 베이스 레지스터
베이스 레지스터로는 SS스택시작, CS프로그램시작, DS데이터영역시작 등의 segment가 쓰인다.
6. CISC와 RISC
CSIC : 명령어가 다양할수록 계산이 편리하다고 엄청나게 많이 추가함. 너무 복잡~
명령어 다양, 가변적, 레지스터 적음. 프로그램 길이 짧음
RISC : 단순하게 가자! 빠르게 실행할 수 있는 적은 개수의 단순한 명령. 메모리로는 잘 안감
컴파일러 복잡. 주소지정방식 단순 제한적.
'뚝딱 공부 상자 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Chapter6. 기억장치 (0) | 2022.06.25 |
---|---|
[컴퓨터 구조] Chapter5. 제어 장치 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter 03. 디지털 논리 회로 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter 02. 데이터의 표현 (0) | 2022.06.25 |
[컴퓨터 구조] Chapter 01. 서론 (0) | 2022.06.25 |