Computer Architecture L02

이동규·2024년 4월 8일
0

2024-1 컴퓨터구조

목록 보기
1/3
post-thumbnail

개인적으로 보기 위해 (시험공부..) 작성한 게시글입니다.

The 'von Newmann Model'

컴퓨터를 설계 관점으로 분석할 때, 1940년대 이후 거의 모든 컴퓨터가 폰 노이만의 '폰 노이만 구조 (von Newmann Model)'를 기반으로 한다.

Components of von Newmann Model

  • Main Memory: 프로그램과 데이터를 보관한다. (이 부분에서 하버드 구조와의 가장 큰 차이를 보임)
  • Central Processing Unit (CU + ALU): 위 메모리 값에 접근하고, 수정하는 역할을 한다.
  • I/O Devices: 컴퓨터 바깥 환경과 상호작용하는 역할을 한다.

It's a Stored-Program Computer!

폰 노이만 구조의 등장 전의 컴퓨터들은 사람이 직접 스위치를 설치하고 전선을 연결해 신호를 처리하는 방식으로 프로그래밍을 하였다. 이 구조의 도입으로 하드웨어는 그대로 두고 소프트웨어만 교체하는 방식으로 편의성이 증대되었고 범용성이 확장되었다.

이때, 메모리는 데이터 (Data)와 절차들 (Instructions)에 대한 정보를 모두 담고 있고, CPU는 이를 후술할 명령 주기 (Instruction Cycle)를 거쳐 프로그램을 실행한다.

맨 첫 사진은 매우 단순화한 사진이고, 조금 더 자세하게 들어가면 다음과 같다.


Instruction Set Architecture

소프트웨어와 하드웨어 (특히 CPU)간의 약속이다. ISA는 여러 명령어들을 정의하고, 특정 명령어를 실행할 때 결과가 어떻게 되는 지를 정의한다.

소프트웨어를 구현하는 프로그래머 입장: ISA를 통해 구현하는 프로그램이 실제 컴퓨터에서 어떻게 작동하는 지 알 수 있다.

하드웨어를 구현하는 설계자 입장: 어떤 명령이 수행되었을 때 어떻게 수행되는 지에 대한 명세서가 된다.

Instructions

프로그램을 하나의 에세이로 보면, 각 Instruction은 문장이라고 볼 수 있다. 문장이 모여서 하나의 글이 되듯이, Insruction이 모여 프로그램이 된다. 다만, 조금 더 근본적(?)이다.

Instruction을 실행 (executing)하는 것은 주로 컴퓨터의 상태를 수정하는데, 이때 상태를 수정함은 메모리의 값이나 Program Counter의 값, 즉 객체 내부의 데이터의 변경을 의미한다.

Each Instruction specifies..

한 RISC-V instruction을 예로 들어보자. (순서대로, 임의대로 띄어쓰기)

0000000 00001 00010 000 00011 0110011

  • 0000000 00001 - func7, func3: 추가정보
  • 00001 00010 - rs1, rs2: Register 주소
  • 00011 - rd: Register 주소
  • 0110011 - opcode: 어떤 명령을 수행할 지 나타내는 부분. CU (Control Unit)에서 해석한다.

Inside CPU..

Control Unit

타이밍과 제어 신호들을 제공함으로써 다른 장치들의 조작을 지시하는 부분인데, 모든 컴퓨터 자원들은 제어 장치에 관리를 받게 된다.

제어 장치는 역사적으로 폰 노이만 구조의 일부로 정의되었다. 현대의 컴퓨터 설계에서 제어 장치는 전반적인 역할과 동작 방식은 변경되지 않은 채로 일반적으로 CPU 내부에 포함되어 있다.

Arithmetic Logic Unit


줄여서 ALU, 산술 논리 장치이다.

ALU는 덧셈이나 뺄셈 같은 두 숫자의 산술연산이나 논리연산을 수행하는 디지털 회로이다. Opcode 부분은 3비트 공간이라서 2^3 = 8개의 연산이 가능하다. (필기에 적혀있는데 확실하진 않음....)

Registers (PC, Inst Reg)

Program Counter (PC): 다음에 실행될 명령어의 주소를 가지고 있어 실행할 Instruction의 위치를 지정한다.

Instruction Register (IR): PC에 저장된 주소에 접근하여 현재 수행해야 할 명령어를 가지고 와서 저장한다. ALU가 직접 메인 메모리에 접근하지 않는 이유는, 레지스터의 속도에 비해 메모리의 속도가 현저히 낮기 때문이다.

Address Space

Byte-addressable Memory: 전제 메모리 공간이 1Byte에 해당되는 단위로 끊어져 있고, 각 쪼개진 단위를 접근할 때 '고유의 메모리 주소'를 통해 가능한 경우
ex) char addr[255]

Word-addressable Memory: 전체 메모리 공간이 Word (아키텍처 종류에 따라 다름)의 크기만큼의 해당하는 단위로 쪼개져 있고, 각 데이터 단위에 대해 접근할 경우 'word 단위로 쪼개져 있는 구역마다 고유의 메모리 주소'를 통해 접근 가능
ex) int addr[255] (1 word를 4바이트라고 가정했을 때)

profile
한 걸음 한 걸음~

0개의 댓글