딥러닝 재밌는 하드웨어 이야기!!(CPU)

wannabedatazzang·2021년 11월 27일
0

본 이야기는
https://voidint.com/2020/10/14/cpu-gpu-tpu-npu/
의 포스팅을 정리한 내용입니다.. 본문이 더 깔끔해요!

이번에 이야기 할 것들

  • cpu|gpu|tpu|npu

CPU

  • cpu는 이번에 이야기할 gpu|tpu|npu와는 조금 다른 구조와 목적이 있습니다!

cpu : Centralized Processing Unit

  • 그 유명한 폰 노이만(aka 악마의 두뇌)이
  • 멘하탄 프로젝트(핵폭탄..) 당시에 제안한 논문 전자 계산기의 구조!!

출처 : wikipedia (von Neumann architecture)

Cpu의 장점은

  • 유연한 계산 능력
  • 순차적인 계산을 통해 이전 계산과 다음번 계산의 유기적 연계가 가능한 구조!
  • Contorl, Cache등 메모리 영역이 고도화 구조
  • 여러 level의 캐시를 대량 집적시 복잡한 프로그렘 효율적으로 수행

Cpu의 단점은?

  • 순차적 계산 실행 : aka von neumann Bottleneck
  • 모든 계산 결과를 ALU(Arithmetic Logic Unit)연산을 거쳐
  • 메모리에 저장되어야 한다.
  • ALU 연산 결과는 메모리 내부 or 캐쉬에 저장되야 함으로 항상
  • 하나의 트랜잭션만 순차적으로 처리 가능하다.
  • 클럭 속도를 높이더라도 높아진 클럭 만큼만 계산이 가능 (*ghz 같은 숫자)
  • 클럭 속도 상승은... 발열 문제로..
  • 결과적으로 cpu는 현재 multi-core. hyper threading
  • 같은 동시 구동 구조로 발전 중!(쓰레드 리퍼가 좋아요...64코어..)

Cpu는 결국 범용 계산기


TMI CPU 연산은 어떻게 이뤄질까?

  • 초초초 간단한 cpu 계산기 동작!시켜보자

    TMI : cpu는 기계어를 실행시킨다
    TMI2 : cpu는 프로세서 마다 기계어 종류가 다를수 있다.!

cpu에서 1+2 = 3이라는 연산이 실행시켜보기

  • 초간단 마이크로 프로세서가 존재하여서 3개의 레지스터를 가지고 있고
  • reg1, reg2, reg3를 지정 프로그렘을 할수 있다고 생각해보자

LDR : CPU 내부의 레지스터로 데이터 가져옴
STR : CPU 내부의 레지스터에서 메모리로 데이터 보내기
ADD : 두개의 레지스터의 데이터 값을 더하고 다른 레지스터에 저장하기

LDR reg1, #1; // reg1 레지스터에 상수 1 로드 
LDR reg2, #2; // reg2 레지스터에 상수 2 로드
ADD reg1, reg2, reg3; // reg1 값과 reg2 값을 더해 reg3 에 저장
STR reg3, [0x00040222h]; // reg3 의 값을 0x00040222 메모리로 내보냄
  • 간단한 ISA(프로세서가 실행할수 있는 기계어 모음)를 가정한 assemble 프로그렘

  • 첫 reg 에 1 저장, 두째 reg에 2 저장

  • ALU를 이용 두 레지에 저장된 값을 세번째 레지스터에 저장

  • 계산 결과를 메모리 주소를 지정하여서 내보내기!

Controller 에 의해 어셈블리 프로그램은 순차적으로 Program Counter 로 올라가고 실행될 것입니다. 프로세서는 LDR, ADD, STR 과 같은 Instruction 에 대해 무엇을 해야 하는지 알고 있으므로, 해당 동작을 클럭이 뜰 때마다 기계적으로 수행합니다. 4 클럭이 지나면 계산이 완료되어 메모리에 결과값이 저장될 것입니다.

0개의 댓글