Top Banner
컴퓨터 시스템 구조론 (2장) Taehyoun Kim Dept. of Mechanical & Information Engineering, University of Seoul
49

컴퓨터 시스템 구조론 (2장)

Feb 02, 2023

Download

Documents

Khang Minh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 컴퓨터 시스템 구조론 (2장)

컴퓨터 시스템 구조론 (2장)

Taehyoun Kim

Dept. of Mechanical & Information Engineering,

University of Seoul

Page 2: 컴퓨터 시스템 구조론 (2장)

Outline

프로세서의 기본 구조 산술논리장치 (ALU)

제어장치 (CU)

내부버스

레지스터

명령어 실행 싸이클

명령어 집합 구조 (ISA: Instruction Set Architecture) 명령어 종류, 형식, 주소지정방식

메모리와의 상호작용 주소공간

데이터 저장 순서 (Endianness)

메모리 읽기, 쓰기 동작 개요

Page 3: 컴퓨터 시스템 구조론 (2장)

프로세서 기본 구조

Page 4: 컴퓨터 시스템 구조론 (2장)

기본 컴퓨터의 프로세서 내부 구조

ALU

제어장치

주소버스

데이터버스

제어버스

PC

IR

AR

AC

DR

메모리 프로세서

0

1

2

4095

프로세서 내부 구성 요소 ALU

제어장치

레지스터

내부 버스

Page 5: 컴퓨터 시스템 구조론 (2장)

산술논리연산장치 (ALU)의 동작

ALU (Arithmetic Logic Unit) 프로그램의 기본 연산을 수행해 주는 하드웨어 장치

사칙 산술 연산, 논리 연산 (AND, OR, NOT 등), Shift 연산 등

ALU

MUX MUX

… … 범용 레지스터

범용 레지스터

데이터 버스 데이터 버스

피연산자 1 피연산자 2

연산 선택 제어 장치

상태 레지스터

플래그

연산 결과

데이터 버스

Page 6: 컴퓨터 시스템 구조론 (2장)

ALU 내부 구조

산술 연산 논리 회로 (4-bit 기준)

Select Input Output Microoperations

S1 S0 Cin y D=A+Y+Cin

0 0 0 B D = A + B Add

0 0 1 B D = A + B + 1 Add with carry

0 1 0 B’ D = A + B’ Subtract with

borrow

0 1 1 B’ D = A + B’+ 1 Subtract

1 0 0 0 D = A Transfer A

1 0 1 0 D = A + 1 Increment A

1 1 0 1 D = A - 1 Decrement A

1 1 1 1 D = A Transfer A

Page 7: 컴퓨터 시스템 구조론 (2장)

ALU 내부 구조 (계속)

논리연산 회로

S1 S0 Output Operation

0 0 E= A B AND

0 1 E=A B OR

1 0 E=A B XOR

1 1 E=A’ Complement

Page 8: 컴퓨터 시스템 구조론 (2장)

ALU 내부 구조 (계속)

Shift 연산

Select Output

S H0 H1 H2 H3

0 IR A 0 A 1 A 2

1 A 1 A 2 A 3 I L

Page 9: 컴퓨터 시스템 구조론 (2장)

ALU 내부 구조 (계속)

Operation select Operation Function

S3 S2 S1 S0 Cin

0 0 0 0 0 F=A Transfer A

0 0 0 0 1 F=A + 1 Increment A

0 0 0 1 0 F=A+B Addition

0 0 0 1 1 F=A+ B+1 Add with carry

0 0 1 0 0 F=A+B’ Subtract with borrow

0 0 1 0 1 F=A+B’ +1 Subtraction

0 0 1 1 0 F = A - 1 Decrement A

0 0 1 1 1 F = A Transfer A

0 1 0 0 x F=AB AND

0 1 0 1 x F= A B OR

0 1 1 0 x F=A B XOR

0 1 1 1 x F=A’ Complement A

1 0 x x x F= shr A Shift right A into F

1 1 x x x F= shl A Shift left A into F

** Universal Shift Register 를 쓰는 경우 shift 연산은 ALU 외부에서 미리 수행할 수도 있음

Page 10: 컴퓨터 시스템 구조론 (2장)

제어 장치 (CU: Control Unit)

제어 장치의 역할 명령어 인출, 해독, 실행에 관련된 제어 장치 생성을 책임짐

공통 동기 신호인 clock을 받아 레지스터, ALU, 내부 버스가 동작하는 데 필요한 제어 신호를 순차적으로 생성

주요 제어 신호의 기능 각 명령어 실행 단계의 순차적 제어 클럭 발생

명령어 인출과 해독

주소지정 방식에 따른 유효주소 계산 및 피연산자 인출

각 레지스터의 입출력 제어

ALU에 대한 연산 및 입출력의 지정

메모리 읽기 및 쓰기 신호

Page 11: 컴퓨터 시스템 구조론 (2장)

제어 장치 (계속)

제어 장치의 구현 형태 고정 배선 (hard-wired) 방식

제어신호 생성에 논리회로 사용

하드웨어적으로 제어신호를 생성하므로 수행속도가 빠르지만 큰 시스템에서는 복잡도가 높고 유연성이 떨어짐

마이크로프로그램 (microprogrammed) 방식

고정배선 방식 제어의 복잡함을 줄이기 위해 도입된 프로그램 형태 제어 방식

제어를 위한 마이크로 프로그램 내의 마이크로명령어의 각 비트 또는 필드가 제어 신호를 나타냄

마이크로프로그램 저장을 위한 별도의 제어 메모리가 필요함

고정 배선 방식에 비해 설계 변경이 용이하지만, 제어 메모리 접근을 위한 추가 오버헤드가 있음

Page 12: 컴퓨터 시스템 구조론 (2장)

버스

버스 (Bus) 컴퓨터 시스템 내의 각 장치간 데이터 교환을 위한 배선을

간소화하기 위해 사용하는 공통 데이터 채널

동일 기능을 가진 신호선의 묶음으로 각 장치 간 전기적 신호를 전달하기 위한 물리적 인터페이스를 정의하기도 하고 이 인터페이스를 제어하기 위한 규약 (protocol)까지 포함하기도 함

CPU 내부 버스 프로세서 내부에 ALU와 레지스터 간 데이터 이동을 위한 데

이터 선과 제어 장치로부터 발생되는 제어 신호선, 주소들로 구성된 내부 버스가 있음

내부 버스는 외부 버스와 격리되어 있으며, 버퍼 레지스터 또는 시스템 버스 인터페이스를 통해서만 외부 버스와 통신

Page 13: 컴퓨터 시스템 구조론 (2장)

내부 버스 (계속)

전달되는 내용에 따른 버스의 분류 주소 버스: 메모리 또는 입출력장치의 주소 지정에 사용

데이터 버스: 프로세서 외부 장치인 메모리, 입출력 장치에 읽고 쓰는 데이터가 전달되는 양방향 신호선들

제어 버스: 외부 장치 제어를 위한 제어 신호 전송에 사용

(읽기, 쓰기 동작 등…)

Processor Data bus

Address bus

n (bits)

… Control bus

Read/Write signal

Byte enable

Page 14: 컴퓨터 시스템 구조론 (2장)

레지스터

레지스터의 역할 프로세서 내부에 위치하며, 데이터나 명령어 등을 임시로 저

장하는 저장 장치

일반 메모리와 달리 순차 논리 회로로 구성됨

주기억 장치 (메모리) 접근을 최소화하여 성능을 향상시키기 위해 사용

가격, 내부회로 복잡성, 칩 크기 등의 이유로 무한정 많은 레지스터를 사용할 수 없음 (보통 10~20개 내외)

Page 15: 컴퓨터 시스템 구조론 (2장)

레지스터 (계속)

레지스터의 분류 전용 레지스터 (Special-purpose Register)

프로세서가 명령어를 수행하는 데 필요한 특정 데이터를 저장하거나 읽는 데 사용하는 레지스터

PC (Program Counter): 다음 인출할 명령어 주소를 저장하고 있는 레지스터

PSR (Program Status Register): 명령 실행 후의 각종 상태를 표시하는 레지스터 (Negative, Zero, Carry, Overflow 등)

IR (Instruction Register): 메모리로부터 인출한 명령어 내용 자체를 임시로 저장하는 레지스터

범용 레지스터 (General-purpose Register) 메모리로부터 인출한 일반 데이터, 주소 혹은 ALU에서 계산된

결과 값을 임시로 저장하는 데 사용하는 레지스터들

각 레지스터는 R1, R2, … 등과 같이 번호를 붙여 구분하는 것이 일반적

Page 16: 컴퓨터 시스템 구조론 (2장)

레지스터 (계속)

레지스터 집합 예 (ARM processor) User32 Fiq32 Supervisor32 Abort32 IRQ32 Undefined32

R0 R0 R0 R0 R0 R0

R1 R1 R1 R1 R1 R1

R2 R2 R2 R2 R2 R2

R3 R3 R3 R3 R3 R3

R4 R4 R4 R4 R4 R4

R5 R5 R5 R5 R5 R5

R6 R6 R6 R6 R6 R6

R7 R7 R7 R7 R7 R7

R8 R8_fiq R8 R8 R8 R8

R9 R9_fiq R9 R9 R9 R9

R10 R10_fiq R10 R10 R10 R10

R11 R11_fiq R11 R11 R11 R11

R12 R12_fiq R12 R12 R12 R12

R13 R13_fiq R13_svc R13_abt R13_irq R13_und

R14 R14_fiq R14_svc R14_abt R14_irq R14_und

R15(PC) R15(PC) R15(PC) R15(PC) R15(PC) R15(PC)

CPSR CPSR CPSR CPSR CPSR CPSR

SPSR_fiq SPSR_svc SPSR_abt SPSR_irq SPSR_und

N Z C V unused I F T M4 M3 M2 M1 M0

31 30 29 28 7 6 5 4 3 2 1 0

Flag bits Control bits

Program Status Register 구조

Page 17: 컴퓨터 시스템 구조론 (2장)

레지스터 (계속)

전용 레지스터 PC, PSR, IR

LR (Link Register)

서브루틴 (혹은 함수) 호출 후 복귀할 주소 (return address)를 저장하는 레지스터

SP (Stack Pointer) 인터럽트, 서브루틴 콜을 위해 이전 상태를 저장하는 용도로 스

택 (stack)이라는 자료구조를 사용함

SP는 스택의 위치를 알려 주는 레지스터

범용 레지스터로 대체된 전용 레지스터들

AC (Accumulator; 누산기): ALU에서 연산한 결과를 임시로 저장하는 레지스터

AR (Address Register): 명령어 해독 후 읽어 올 데이터의 메모리 주소를 저장하는 레지스터

DR (Data Register): 명령어 해독 후 메모리에서 읽어 온 데이터를 임시로 저장하는 레지스터

Page 18: 컴퓨터 시스템 구조론 (2장)

명령어 실행 싸이클

Page 19: 컴퓨터 시스템 구조론 (2장)

명령어 실행 싸이클이란 ?

컴퓨터의 동작은 주기억장치에 저장되어 있는 프로그램을 읽어 수행하는 것으로 이루어짐

프로그램은 프로세서에서 정의된 명령어들로 구성되어 있음

명령어 실행 싸이클 (Execution Cycle) 프로세서가 하나의 명령어를 실행하는 데 필요한 전체 처리

과정으로 미리 정해진 과정이 반복적으로 수행됨

Sub-cycle

인출 (Fetch)

해독 (Decode)

실행 (Execute)

저장 (Store)

Page 20: 컴퓨터 시스템 구조론 (2장)

명령어 실행 싸이클

명령어 인출

명령어 해독

명령어 실행

결과 저장

다음 명령어

PC가 지정하는 메모리 번지에 저장된 명령어 가져 옴

가져 온 명령어를 IR에 저장 후 해독

명령어 해독을 통해 실행할 연산 결정

필요한 경우 피연산자 인출

해독한 명령어 실행

실행 결과를 결과 레지스터나 메모리에 저장

실행 결과의 상태는 상태 레지스터에 저장

PC 값을 변경하여 다음에 수행할 명령어 결정

일반적으로 순차적으로 수행하나 분기 등의 명령은 다름

Page 21: 컴퓨터 시스템 구조론 (2장)

명령어 실행 싸이클 (계속)

시나리오 1 시나리오 2

프로그램

인터럽트 요청

상태 저장 (스택)

상태 복원

인터럽트

처리 루틴

인터럽트

싸이클

프로그램

상태 저장 (스택)

상태 복원

서브루틴

서브루틴 호출

Page 22: 컴퓨터 시스템 구조론 (2장)

명령어 집합 구조 (ISA)

Page 23: 컴퓨터 시스템 구조론 (2장)

명령어 집합 구조 (ISA)란 ?

Computer Architecture =

Instruction Set Architecture +

Machine Organization

instruction set

software

hardware

Page 24: 컴퓨터 시스템 구조론 (2장)

명령어 집합 구조란 ?

명령어 집합 구조 (ISA)의 정의

프로세서의 명령어 집합을 규정짓는 특성

각 프로세서를 구분하는 특징이 됨

어떤 특성들이 있나 ? 명령어의 형식

지원하는 연산 (명령어) 종류

지원하는 피연산자의 종류

피연산자의 저장 형태 및 주소 지정 방식

인터럽트와 예외 사항 처리 방식

Page 25: 컴퓨터 시스템 구조론 (2장)

명령어 형식

프로세서는 미리 정의되어 있는 명령어 형식에 따라 해독

명령어 형식의 구성 연산코드 + 피연산자로 구성되며 일정한 비트 수로 구성

연산 코드 (Opcode) 프로세서에서 수행할 연산 혹은 실행할 동작을 정의

명령어에서 연산코드 부분이 n 비트이면 최대 2n개의 서로 다른 연산 종류를 지원할 수 있음

피연산자 (Operand)

연산을 수행하는 데 필요한 데이터 자체 혹은 데이터 주소

각 연산은 일반적으로 하나 이상의 입력 피연산자와 하나의 결과 피연산자를 가짐

피연산자는 레지스터, 메모리, 혹은 외부 I/O 장치를 가리킬 수 있음

Page 26: 컴퓨터 시스템 구조론 (2장)

명령어 형식 (계속)

명령어 형식 (Instruction Format) 명령어 내의 필드 수와 배치 방식, 각 필드의 비트 수

CISC 계열은 가변 길이 명령어 형식, RISC 계열은 고정 길이 명령어 형식 사용해 왔으나 최근에는 혼합형도 많음

명령어 형식은 제어 장치의 복잡도와 연관됨

연산 코드 필드의 범위는 지원하고자 하는 연산의 종류에 따라 결정

피연산자 필드의 범위는 피연산자 종류에 따라 결정

직접 데이터: 표현 가능한 수의 크기

메모리 주소: 기억 장치의 주소 공간 크기

레지스터: 데이터 저장에 사용될 수 있는 범용 레지스터의 수

사용 예) 피연산자 1은 레지스터를 지칭하고, 피연산자 2는 메모리 주소를 지정하는 경우 피연산자 1= 4비트 16개의 레지스터 사용 가능

피연산자 2= 8비트 메모리 주소 범위: 0번지~255번지

Page 27: 컴퓨터 시스템 구조론 (2장)

명령어 형식 (계속)

어떤 동작을 수행할 것인가 ?

ADD

피연산자를 어디서 찾을 것인가 ?

R2, R3

연산 결과는 어디에 저장할 것인가 ?

R1

다음 명령어는 어디서 찾을 것인가 ? 단순 산술 연산이므로 메모리에서 바로 다음에 저장된 명령어 인출

ADD R1, R2, R3

Op Code Operand

Page 28: 컴퓨터 시스템 구조론 (2장)

피연산자 수에 따른 명령어 분류

0-주소 형식 (스택 이용)

ADD // Top of Stack Top of Stack + Next Elem.

1-주소 형식 (AC 사용)

ADD R1 // AC AC + R1

1 ½ - 주소 형식 (메모리와 레지스터 혼용)

ADD R1, X // R1 R1 + MEM[X]

2-주소 형식

ADD R1, R2 // R1 R1+R2

3-주소 형식

ADD R1, R2, R3 // R1R2+R3

Page 29: 컴퓨터 시스템 구조론 (2장)

피연산자 수에 따른 명령어 분류 (계속)

명령어 형식 비교 (C=A+B 의 경우)

Page 30: 컴퓨터 시스템 구조론 (2장)

연산의 종류

Page 31: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (Addressing Mode)

주소 지정 방식이란 ? 명령어를 실행하기 위해 처리해야 할 데이터에 접근하기 위

한 주소 (유효 주소) 를 계산하기 위한 방식

다양한 주소 지정 방식을 쓰는 이유는 제한된 수의 명령어 비트를 이용해 최대한 성능 향상과 프로그래밍의 유연성을 가질 수 있도록 하기 위함

유효 주소 (E.A : Effective Address) – 실제 피연산자가 저장되어 있는 메모리 주소

Page 32: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

주소 지정 방식의 종류 즉치 주소지정 방식 (immediate addressing mode)

직접 주소지정 방식 (direct addressing mode)

간접 주소지정 방식 (indirect addressing mode)

레지스터 주소지정 방식 (register addressing mode)

레지스터 간접 주소지정 방식 (register-indirect addressing mode)

묵시적 주소지정 방식 (implied addressing mode)

변위 주소지정 방식 (displacement addressing mode)

상대 주소지정 방식(relative addressing mode)

인덱스 주소지정 방식(indexed addressing mode)

자동증가 주소지정 방식 (auto-increment addressing mode)

자동감소 주소지정 방식 (auto-decrement addressing mode)

Page 33: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

즉치 (Immediate) 주소지정 방식

데이터가 명령어에 포함되어 있는 방식

필드의 내용이 연산에 사용할 실제 데이터

용도

프로그램에서 레지스터들이나 변수의 초기 값을 어떤 상수값(constant value)으로 설정하는 데 유용하게 사용

데이터를 인출하기 위하여 기억장치를 액세스할 필요가 없음

상수값의 크기가 피연산자 필드의 비트 수에 의하여 제한

연산코드 데이터 값 MOV R1,#500

LOAD #500

Page 34: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

직접(Direct) 주소지정 방식 피연산자의 내용이 유효 주소가 되는 방식

데이터 인출을 위하여 한 번의 기억장치 액세스만 필요

연산 코드를 제외하고 남은 비트들만 주소 비트로 사용될 수 있기 때문에 직접 지정할 수 있는 기억장소의 수가 제한됨

메모리

데이터

MOV R1, M[1000]

연산코드 주소 (1000)

1000

Page 35: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

간접(Indirect) 주소지정 방식

피연산자에 기억장치 주소가 저장되어 있지만, 그 주소가 가리키는 기억 장소에 데이터의 유효 주소가 저장되어 있도록 하는 방식

접근 가능한 최대 메모리용량은 그 메모리에 저장된 전체 비트수에 의해 결정. 확장 가능

실행 사이클 동안에 두 번의 기억장치 액세스가 필요.

연산코드 간접주소(7000)

메모리

데이터

주소(8000) 7000

8000 ADD R1, @(R3) // R1 R1+M[M[R3]]

Page 36: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

레지스터 주소지정 방식

연산에 사용할 데이터가 레지스터에 저장되어 있는 방식

주소지정에 사용될 수 있는 레지스터들의 수는 피연산자(R)의 비트수에 결정

레지스터 수가 많지 않으므로 피연산자 필드의 비트 수가 적어도 됨

데이터 인출을 위하여 기억장치 액세스가 필요 없다.

데이터가 저장될 수 있는 공간이 CPU 내부 레지스터들로 제한

연산코드 레지스터 #

레지스터 집합

데이터

R1

R2

Rn

ADD R1, R2 // R1 R1+ R2

Page 37: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

레지스터 간접 주소지정 방식 피연산자 필드(레지스터 번호)가 가리키는 레지스터의 내용

을 유효 주소로 사용하여 실제 데이터를 인출하는 방식

주소지정 할 수 있는 메모리의 영역이 확장

예) 레지스터의 길이 = 16 비트라면, 주소지정 영역: 216 = 64K 바이트

연산코드 레지스터(R10)

메모리

데이터

7000

8000

레지스터 집합

주소(8000)

R1

R10

R11

ADD R1, (R10) // R1 R1+ M[R10]

Page 38: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

묵시적(Implied) 주소지정 방식 명령어 실행에 필요한 데이터의 위치가 묵시적으로 지정

PUSH /POP 명령어 (스택 이용)

INC (AC에 저장된 데이터 대상)

NOP (No Operation; 파이프라인 해저드를 막기 위해 씀)

장점: 명령어 길이가 짧음

단점: 사용할 수 있는 명령어 종류가 제한됨

Page 39: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

변위(Displacement) 주소지정 방식

직접 주소지정과 레지스터 간접 주소지정 방식의 조합

유효 주소 = 변위주소 + (R)

명령어에 포함된 변위 A값과 R이 가리키는 레지스터의 내용을 더하여 유효 주소를 결정

메모리

데이터

7000

8000

레지스터 집합

2000

R1

R10

R11

연산코드 레지스터

(R10)

변위주소

(6000)

+

ADD R1, 6000(R10) // R1 R1+ M[R10+6000]

Page 40: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속) 상대(Relative) 주소지정 방식

프로그램 카운터(PC)를 레지스터로 사용. 주로 분기 명령어에서 사용

유효주소 = 변위주소 + (PC)

전체 메모리 주소가 명령어에 포함되어야 하는 일반적인 분기 명령어보다 적은 수의 비트만 있으면 된다

분기 범위가 피연산자 필드의 길이에 의하여 제한

메모리

데이터 프로그램카운터(PC)

연산코드 변위주소

+

LOAD X(PC), R1 // X=변위주소, 유효주소=X+PC

Page 41: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속) 인덱스(Indexing) 주소 지정방식

인덱스 레지스터의 내용(IX)과 변위주소를 더하여 유효 주소를 결정

유효주소 = 변위주소 + (IX)

인덱스 레지스터(IX) : 인덱스(index) 값을 저장하는 특수 레지스터

배열 데이터 액세스에서 많이 사용

자동 인덱싱(auto-indexing)

명령어가 실행될 때마다 인덱스 레지스터의 내용이 자동적 증가 혹은 감소

이 방식이 사용된 명령어가 실행되면 아래의 두 연산이 연속적으로 수행

메모리

데이터 인덱스 레지스터

(Rindex)

연산코드 변위주소

+

LOAD X(Rindex), R1 // Rindex = 인덱스 레지스터,

유효주소= X+Rindex

Page 42: 컴퓨터 시스템 구조론 (2장)

주소 지정 방식 (계속)

자동증가 주소지정 방식

레지스터 간접 주소지정 방식과 유사

자동증가 레지스터를 사용하며, 이 레지스터의 출력이 유효주소임

자동 증가는 메모리로 접근한 후 이루어짐

메모리

AA 레지스터(Ri)

연산코드 자동증가 레지스터(Rauto) 7000

Rauto

8000

8001 BB

11

00

8000

레지스터(Ri)

Rauto

AA

8001

(a) 실행 전

(b) 실행 후

99

메모리

AA

7000

BB

11

99

7999

8000

8001

7999

LOAD (Rauto)+, Ri

Page 43: 컴퓨터 시스템 구조론 (2장)

43

주소 지정 방식 (계속) 자동감소 주소지정 방식

자동증가 주소지정방식과 유사하지만 이 방식에서는 자동감소 레지스터의 내용이 먼저 감소한다.

자동감소 레지스터의 값이 메모리의 접근하기 위한 주소이다. 이 주소에서 읽어서 레지스터(Ri)로 적재한다

메모리

AA 레지스터(Ri)

연산코드 자동증가 레지스터(Rauto)

7000

Rauto

8000

8001 B

B

11

00 8000

레지스터(Ri)

Rauto 99

7999

(a) 실행 전

(b) 실행 후

99

메모리

AA

7000

8000

8001 BB

11

99

7999

7999

LOAD -(Rauto), Ri

Page 44: 컴퓨터 시스템 구조론 (2장)

메모리와의 상호작용

Page 45: 컴퓨터 시스템 구조론 (2장)

배경 지식

용어 정의 메모리 장치: 데이터 입출력 기능을 가진 저장 요소들의 집합

BIT(Binary Digit) ; 메모리 장치의 한 셀은 한 비트로 ‘0’ 또는 ‘1’을 저장

Byte: 8-bits

메모리 용량: 메모리 장치에 저장할 수 있는 비트 수

워드(Word)

메모리에 대한 기본 입출력 단위로 바이트의 배수 단위인 8, 16. 32. 64 비트가 사용됨

일반적으로 프로세서에서 메모리 접근은 워드 단위로 이루어짐

각 워드는 각기 서로 다른 주소를 가짐

Page 46: 컴퓨터 시스템 구조론 (2장)

주소 공간 (Address Space)

정의 컴퓨터 시스템에서 데이터 주소를 나타내는 비트 수에 의해

접근할 수 있는 주소 범위

주소 비트가 m 비트이고, 한 워드의 크기가 n 비트라면

이 메모리의 용량은 2m x n 비트임

n bits

Word Address

0

1

2

2m-1

D0 D1 Dn-1 …….

Page 47: 컴퓨터 시스템 구조론 (2장)

저장 순서 (Byte-ordering)

정의: 메모리 워드 내에서 바이트가 어떤 순서로 저장되는가에 따른 분류 Big Endian (H-O-B-F: High-Order-Byte-First)

Motorola 68K, PowerPC, MIPS, Sparc

Little Endian (L-O-B-F: Low-Order-Byte-First)

Intel CPU family, DEC Vax, DEC Alpha

ARM: 두 가지 방식 모두 지원 (configurable)

Page 48: 컴퓨터 시스템 구조론 (2장)

메모리 읽기

프로세서와 메모리 사이의 데이터 전송이 이루어지고 메모리의 주소는 항상 프로세서에서 출력된다. (1) 메모리의 읽을 데이터 워드 주소를 MAR에 적재한다.

(2) 프로세서에서 ‘Read' 신호를 메모리로 전달하며 MAR에 위치한 데이터, 즉 워드를 읽어 나와 MDR로 적재한다.

(3) 프로세서는 MDR에 저장된 데이터를 사용하게 된다.

그림 2-23

Page 49: 컴퓨터 시스템 구조론 (2장)

메모리 쓰기

메모리 쓰기 (1) 프로세서는 메모리에 저장한 데이터를 먼저 특수한 레지스터

인 MDR에 적재한다.

(2) 프로세서는 데이터를 저장할 메모리 위치, 즉 주소를 MAR에 적재한다.

(3) 프로세서의 ‘Write' 제어신호는 MDR에 있는 데이터를 메모리 주소 MAR 위치에 저장한다.

그림 2-24