새소식

반응형
CS 지식/컴퓨터구조

[컴퓨터 구조] 2. CPU와 메모리

2023.01.11
  • -
반응형

 

int a, b, c
main
...
a = b + c

지난 시간 내용을 정리하면 다음과 같다.

  • 선언한 데이터들이 compiler에 의해 Main memory의 data memory(중간)에 저장된다.
  • RISC의 경우 memory에서 ALU에 바로 전달하지 않고 중간에 register file(bank)에 저장하는 과정이 있다.
  • 프로그램 수행 과정
    • 연산을 하기 위해서는, compiler에 의해 data b와 data c를 각각 빈 register 공간에 저장한다.
    • register에 있던 b, c 는 ALU에 들어가 연산을 하게 되고 그 결과가 다시 register 의 빈 공간에 저장된다.
    • 이 결과가 register 에서 다시 data memory로 전달되어 마무리 된다.

 

이러한 과정처럼 단순한 instruction들을 모아서 복잡한 기능을 하는데 이러한 기능을 모은 것을 Instruction Set Architecture라고 한다.

 

ISA

ld [b] -> r2
ld [c] -> r3
add r2 + r3 -> r10
store r10 -> [a]

위 코드는 Instruction Set을 assembly 언어로 나타낸 것이지만 실제로 컴퓨터 메모리에는(특히 program memory) 0과 1로만 구성된 것들이 저장되어 있다.

 

그런데 CPU 안에서는 register로 바로 가기 전, cache라는 곳을 거쳐서 도달하게 된다. 이 cache는 받는 object에 따라 두 분류로 나뉘어 존재하는데 하나는 data memory에서 받아오는 Data Cache(DC), 또 하나는 program memory에서 받아오는 Instruction Cache(IC)이다.

 

특히, IC에 존재하는 instruction을 하나씩 받아오기 위해서 memory의 주소를 알아야 하는데 이를 알려주기 위한 Program Counter(PC)가 존재하게 된다.

 

정리하면 CPU는 다음과 같이 동작하는 것이다.

  • 맨 처음에 PC값을 setting한다.
    • 명령어 시작점은 항상 PC가 가리키는 곳의 명령어이다.
  • 해당 값에 상응하는 instruction들을 IC에서 Instruction Register(IR)로 하나씩 가져온다. (fetch)
  • 그러고 나서 (Combinational) control logic 에서 이 값을 분석한다.(decoder 역할)
  • 위 예시 코드와 같은 경우 데이터 b를 load 과정이기 때문에 이에 대한 control 신호들이 막 날라간다.
  • 이 신호에 의해 DC(data cache)에 있던 b가 register에 전달되어 저장된다.(load)
  • c도 마찬가지로 register에 전달되고
  • b와 c가 ALU에 들어가 연산을 진행 후 나온 결과가 register로 전달되고
  • 결과 data가 다시 DC의 a로 전달된다.(store)

 

이러한 것(microarchitecture)을 설계하는 것이 목적이다.

CPU가 어떤 동작을 수행해야 하는가? -> ISA

 

그런데 이를 설계할 때 고려해야 하는 중요한 세 가지가 존재한다.

  • performance(speed)
  • area(cost) (area는 작아지면 빨라지기 때문에 perfomance와도 관련이 있다.)
  • power(energy): power를 줄이려 해야함
    • power ∝ Vdd2 * f * CL

 

performance

perf. = 1/exec time

 

Execution time

실행 시간을 측정할 때는 두 가지 방법이 있다.

  • ① Latency(response time)
  • ② Throughput (초당 처리하는 task)

 

image

case A: 사람이 위와 같은 통로를 지나는데 걸리는 시간을 10sec라고 하자.

 

image

case B: 또한 위와 같은 통로를 지나는데 중간 중간에 칸막이가 쳐져있고 이 칸막이 하나당 지나가는데 2sec가 걸린다고 하자.


이 때 두 경우의 latency는 모두 10sec이다. 한 사람이기 때문에 둘 간의 차이가 존재하지 않는 것처럼 보이나 이번엔 100명의 사람이 위 두 통로를 지난다고 해 보자.

 

A의 경우 한 명당 10초가 걸려 총 1000초가 걸릴 것이다.

B의 경우 첫 사람은 10초가 걸리나 이 사람이 칸막이를 하나씩 지나면서 다른 사람들도 빈 곳에 계속해서 줄을 서있을 수 있게 된다.

그렇기 때문에 한 명이 빠져나가기 시작하면 2초 간격으로 한 명씩 빠져나갈 수 있게 된다.

 

이를 정리하면 아래와 같다.

case A: 10초에 사람 한 명(clock 하나 당 실행)

latency = 10 sec

total exec_time = 10 x 100 = 1000 (sec)

throughput = 0.1 (task/sec)

 

case B: 10초에 사람 5 명(clock의 주기가 위 보다 짧음)

어느 순간(10초 이후)에는 동시에 작업이 일어남

latency = 10 sec

total exec_time = 10 + (99 x 2) = 208 (sec) ≒ 200 (sec)

throughput = 0.5 (task / sec)

 

위 두 경우는 약 5 배 가량의 total exec_time 차이가 난다.

 

B의 경우를 pipelining이라고도 하며 해당 칸막이는 그냥 쉽게 쉽게 만들 수 있는 것이 아니라 만드는 데 드는 시간이 조금 걸리긴 하지만 명령어가 길때는 훨씬 더 효율적이기 때문에 상황에 따라 굉장히 이득을 볼 수 있는 구조이다.

 

caseB보다 caseA이 5배 만큼 높은 throughput(성능, performance)을 가진다.

 

Throughput(bandwidth) = # of task / time unit(hour, sec)

위 예제에서 task는 사람이고 100명이 지나간 경우를 상정했으니 task=100이다.

 


 

Inside the Processor(CPU 내부) 

  • Datapath: 데이터에 대해 연산을 수행한다.
  • Control: sequences data path, memory
  • Cache memory
    • 데이터에 즉시 접근을 위함 작고 빠른 SRAM 메모리

 

  • Apple A12 Bionic Processor

 

A safe Place for Data(데이터에게 안전한 곳은?)

  • Volatile main memory(휘발성 주 메모리)
    • 파위가 꺼지면 데이터와 명령어를 잃는다.
  • Non-volatile secondary memory(storage) (비휘발성 보조 메모리)
    • Magnetic disk
    • Flash memory
    • Optical disk (CDROM, DVD)

 

Semiconductor Technology(반도체 기술)

  • Silicon(실리콘 원소): semiconductor
  • Add materials to transform properties:
    • Conductors
    • Instulators
    • Switch

 

Manufacturing ICs(IC의 공정)

image

  • silicon ingot을 자른다 -> wafer가 됨
  • wafer를 design
  • test를 통해 wafer상의 detect를 잘라서 버림
  • custom에게 전달 전 최종 test
  • custom에게 전달

 

반도체 공정의 중요 3요소

  • fab
  • design
  • test

 

Integrated Circuit Cost(집적 회로 비용)

image

  • Cost per die
  • Dies per wafer
    • 근사치를 제공
  • Yield
    • empirical(경험적인 값)
    • related to number of critical processing steps
      • 제곱으로 되어는 있지만 사실상 매우 중요하기 때문에 n제곱으로 생각할 수 있다. 공정에 따라서 5제곱이 되기도 함
    • yield에 따라 안정되었냐 안 되었냐를 알 수 있음

칩의 크기에 따라 detected를 받아들이는 정도가 매우 다를 수 있다.(detect가 4개인데 칩의 크기가 매우 커서 wafer에 칩이 8개가 있다면 8개 중에 4개가 결함이 있는 것이므로 문제가 있는 것이다.)

 

Defining Performance(퍼포먼스는 무엇으로 정의되는가)

  • 어느 비행기가 제일 좋은 성능을 가졌을까?
    • 기준에 따라서 다름

 

Response Time과 Throughput

computer architecture 관점에서는 performance를 throughput으로 볼 것이다.

  • Response time(latency)
    • 하나의 업무를 수행하는데 얼마나 걸리는가
  • Throughput
    • Total work done per unit time
    • 단위 시간당 진행한 총 업무량 
      • e.g., tasks/ transactions/... per hour
  • How are response time and throughput affected by
  • response time과 throughput는 아래와 같은 상황에서 어떻게 영향을 받는가? 
    • 더 빠른 버전의 프로세서로 교체 시
    • 더 많은 프로세서를 추가 시(multi-processor)
  • 우선은 response time에 집중해 볼 것이다.
    • Throughput은 나중에 또 고려를 해 볼 것이다.
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.