컴퓨터 구조의 접근 방법

수민·2023년 8월 31일
0

CS 공부

목록 보기
3/5
post-thumbnail

인프런 강의 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍을 듣고 정리한 학습 목적의 글입니다.
문제 시 댓글 혹은 메일 주시면 감사하겠습니다.


컴퓨터 구조의 접근방법

레지스터 디자인

  1. 레지스터는 몇 비트로 구성할 것인가?
    레지스터 == 비트 시스템
    n비트 시스템에서의 명령어 길이 == n비트 == 레지스터의 크기 == 데이터의 최소 이동 단위
    그래야 하나의 명령어를 저장할 수 있다.

일단 16비트로 구성하자.

  1. 레지스터를 몇 개로 구성할 것인가?
    많으면 많을 수록 좋지만, 8개의 레지스터를 구성해보자.

  2. 레지스터 각각을 무슨 용도로 사용할 것인가?
    레지스터 = 특정한 목적을 가지고 있는 메모리
    RAM, 하드디스크 = 무엇이든 저장할 수 있는 메모리

또한,
범용적으로 사용할 수는 있지만,
각 용도를 정하면 명령어가 단순해지고, 속도가 빨라진다.

일단,
r0 ~ r7까지의 레지스터로 구성하고,
r0 ~ r3 : 연산을 위한 범용 레지스터
r4 : instruction register
r5 : stack pointer
r6 : link pointer
r7 : program counter

이렇게 구성하도록 하자.


ALU : 명령어 해독
명령어를 디자인해야 ALU가 명령어를 해독할 수 있다.
명령어 디자인과 CPU 디자인을 같이 해야 한다.

연산 결과 : 일단 레지스터에 저장

저장소도 레지스터로 제한하지 않으면, 그만큼 많은 비트 요구됨 -> 명령어가 복잡해진다.

명령어를 단순하게 만들자

RISK

(Reduced Instruction Set Computer)
: 명령어 구조가 단순한 CPU 구조

CISK 에서 명령어를 간소화시킨 것.
명령어 조합이 다양하지 못하기 때문에, CISK로 표현하면 한 줄로 끝날 명령어를 RISK로 표현하면 복잡할 수도 있다.

but,
요즘 대부분의 CPU는 RISK 사용.
: 고성능 CPU에 적합 (CISK는 성능 향상의 한계 존재)

RISK의 명령어 처리 과정
1. fetch
2. decode
3. execution

이 세 개의 과정이 각각의 1 clock에 실행됨

: 하나의 명령어를 실행하는 데 3 clock 필요
모든 명령어는 3 clock을 거쳐 처리된다.

장점 : 여러 개의 명령어를 처리할 때, 각 명령어의 Fetch / Decode / Execution이 동시에 실행될 수 있다 (명령어 A의 Fetch, 명령어 B의 Decode, 명령어 C의 Execution).
-> n + 2의 clock으로 n개의 명령어 처리 가능

clock 수는 낮추되, 최대한 많은 명령어를 실행할 수 있는 구조로 디자인되어 있다.

CISK

(Complex Instruction Set Computer)
다양한 형태로 명령어를 조합할 수 있다.
명령어 처리 과정을 단순화시켜서 처리하지 못함.


모든 CPU의 데이터는 레지스터를 통해 빠져나간다.
레지스터 : 임시 저장소. 데이터 입출력.

제약사항이 있다 == RISK다 == 성능 향상을 위해서는 어쩔 수가 없다 ㅠㅠ

LOAD & STORE

LOAD

메모리에 있는 값을 레지스터로 불러들이는 명령어

STORE

연산 결과를 메모리에 저장하는 명령어

모든 연산은 레지스터를 통해 진행한다.
그래서 LOAD, STORE 명령어가 필요하다.


Direct 모드 & Indirect 모드

Direct 모드

: 데이터가 존재하는 메모리의 주소값을 방문해서 값을 가져온다.
메모리의 값을 그대로 레지스터에 LOAD.

간단하게 접근할 수 있지만,
할당된 비트 수로 표현할 수 없는 메모리 영역은 접근할 수 없다.

Indirect 모드

: 한 단계 더 진행.
메모리의 적힌 주소값을 참조해서, 그 위치에 있는 메모리의 값을 레지스터에 LOAD.

즉,
비트 사용 범위 제한때문에, Direct모드로 표현 가능한 메모리 주소 범위를 벗어났을 때 Indirect 모드를 사용한다.

profile
우하하

0개의 댓글