교대최소제곱법
[컴퓨터 시스템 part 1] CPU 본문
명령어 주소 지정 방식
- 직접 주소 지정
- 간접 주소 지정
- 레지스터 주소 지정
- 레지스터 간접 주소 지정
- 스택 주소 지정
- 변위 주소 지정 : 오퍼랜드 + 레지스터 값
- 상대 주소 지정 : 오퍼랜드 + 프로그램 카운터
- 베이스 레지스터 주소 지정 : 오퍼랜드 + 베이스 레지스터(기준 주소)
CPU의 내부 구성
ALU
ALU : 계산기 역할
플래그 : 연산 결과에 대한 부가 정보(ex 양수 음수)
제어장치
클럭 신호를 받는다 : 시간 단위(박자)
명령어 레지스터를 해석
제어 신호 : cpu 내부 외부에 출력
레지스터
레지스터 : 저장장치
메모리에서 데이터를 가져오는 순서
프로그램카운터 → 메모리 주소 레지스터 → 메모리 버퍼 레지스터 → 명령어 레지스터
*유효주소 : 연산에 사용할 데이터가 저장된 위치 → 명령어 주소 지정 방식
빠른 CPU란?
- 클럭을 빠르게 돌린다
- 코어, 스레드를 늘리는 것
클럭을 빠르게 돌린다
명령어 사이클 : 일정한 주기를 가지고 실행
인출 → 실행 → 인출 → 실행 …
간접 사이클 : 간접 주소 지정의 경우 사용
클럭을 빠르게 돌린다 = 사이클을 빠르게 돌린다
코어, 스레드를 늘린다
하드웨어적 스레드(논리 프로세서 = 스레드 개수) : 하나의 코어가 처리하는 명령어의 단위
멀티스레드 프로세스 → 레지스터 세트가 가장 중요
소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위 → 메모리에서 한번에 두개를 읽어감
명령어 병렬 처리
명령어 파이프 라인 : 인출 → 해석 → 실행 → 저장 (명령어 사이클)
- 파이프라인 위험 : 겹쳐서 실행 불가능한 경우
단계가 겹치지만 않으면 동시에 실행이 가능
- 데이터 위험 : 명령어끼리 순서(의존성)가 있는 경우
- 제어 위험 : 프로그램 카운터가 바뀔 때
- 구조 위험 : 서로 다른 명령어가 같은 부품을 활용하려고 할 때
비순차적 명령어 처리 : 합법적인 새치기 → 의존성이 없는 명령어의 순서를 빈 공간에 땡기는 것
why? 파이프라인의 중단을 막기 위해서 + 효율적으로 실행하기 위해
+인터럽트
예외(동기) : 실행할 수 없는 명령어
하드웨어 인터럽트(비동기) : 입출력 장치에 의해 발생(완료 알림과 비슷함) → 주기적으로 확인 안해도 됨
인터럽트 요청 신호, 플래그 → 지금 방해해도 되나요?
명령어 집합 구조 : cpu의 언어
CISC(complex) : x86, 86-64 이 쪽 → 복잡하고 다양한(가변길이) → 적은 수의 명령어로 가능
but 복잡하기 때문에 파이프라이닝에 불리 + 가변길이라 실행시간도 지멋대로임
하지만 실제로는 마이크로 명령어로 수행하기 때문에 성능도 나쁘지 않음
RISC(reduced) : 단순, 짧고 규격화된 명령어 → 그래서 양으로 때움
'CS 기초 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 시스템 part 4] 입출력장치 (0) | 2023.09.08 |
---|---|
[컴퓨터 시스템 part 3] 보조기억장치 (0) | 2023.09.08 |
[컴퓨터 시스템 part 2] 메모리 RAM (0) | 2023.09.08 |