📍 CPU(Central Processing Unit)

직역하면 중앙처리장치(中央處理裝置)
말 그대로 컴퓨터의 중앙에서 모든 데이터를 처리하는 장치라는 뜻

사람의 두뇌에 해당되는 것으로, 사용자로부터 입력받는 명령어를 해석, 연산 후에 그 결과를 출력하는 역할
CPU에는 연산, 해독, 제어 장치가 집적되어 있어서 마이크로프로세서(Micro-Processor)라고도 부른다.
컴퓨터의 전반적인 성능을 좌우하는 가장 중요한 부품

CPU 속도를 나타내는 단위 클럭(clock)
1초당 CPU 내부에서 몇 단계의 작업이 처리되는지를 측정하여 주파수 단위인 Hz(헤르츠)로 나타낸 것

과거에는 클럭속도가 CPU의 성능을 나타내는 절대적인 기준이었지만, 최근에는 하나의 CPU에 2개 이상의 코어(Core)를 집어넣은 멀티코어(Multi Core) CPU가 등장, 클럭 속도 외에도 코어의 수가 CPU의 성능을 나타내는 또 하나의 기준이 되고 있다.

📍 ALU

  1. ALU는 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어신호를 받아들인다
    그 결과값을 레지스터에 담는다!
  2. ALU는 연산결과에 대한 부가정보로써 플래그 정보를 플래그 레지스터에 저장한다.
    (ex. 연산결과가 음수인지 양수인지 등..)
    혹은 연산결과가 결과를 담을 레지스터에 비해 너무 크다면 그것또한 플래스 레지스터에 저장

메모리가 아니라 레지스터에 저장하는 이유는?
CPU가 레지스터에 접근하는 속도가 CPU가 메모리에 접근하는 속도보다 빠르기때문에

📍 제어장치

  1. clock신호를 받아들임 - 컴퓨터의 모든 부품들을 일사분란하게 움직일 수 있게 하는 시간 단위
  2. 해석할 명령어(실행하고자 하는 명령어)를 받아들임 - 명령어 레지스터에 저장되어있는 명령어를 받아들임
  3. 플래스 레지스터의 플래그 정보도 받아들임
  4. 제어신호를 받아들이고 제어신호를 내보냄

📍 레지스터

CPU 내부의 작은 임시저장장치
프로그램 속 명령어 & 데이터는 실행 전후로 레지스터에 저장

  1. 프로그램 카운터
    • 메모리에서 가져올 명령어의 주소(메모리에서 읽어들일 명령어의 주소)
  2. 명령어 레지스터
    • 제어장치가 해석할 명령어를 저장(방금 메모리에서 읽어들인 명령어)
  3. 메모리 주소 레지스터
    • 메모리의 주소
    • CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼때 거치는 레지스터
  4. 메모리 버퍼 레지스터
    • 메모리와 주고받을 값(데이터와 명령어)
    • CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터
  5. 플래그 레지스터
    • 연산 결과 또는 CPU 상태에 대한 부가적인 정보 저장 레지스터
  6. 범용 레지스터
    • 다양하고 일반적인 상황에서 자유롭게 사용(보통 여러개 존재)
  7. 스택 포인터
    • 스택의 꼭대기를 가리킴
    • 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식
      스택포인터 : 스택의 꼭대기를 가리키는 레지스터(스택이 어디까지 차있는지에 대한 표시)
  8. 베이스 레지스터
    • 기준 주소 저장
    • 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소 얻기
      1. 상대 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효 주소 얻기
      2. 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 베이스 레지스터(기준주소)의 값을 더하여 유효 주소 얻기

📍 메모리 보호

📖 한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 베이스 레지스터가 실행중인 프로그램의 가장 작은 물리주소를 저장한다면, 한계 지스터는 논리 주소의 최대 크기를 저장
  • 베이스 레지스터값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터+한계레지스터값

📍 저장 장치 계층 구조(memory hierarchy)

① CPU와 가까운 저장 장치는 빠르고, 멀리있는 저장장치는 느리다.
② 속도가 빠른 저장장치는 저장 용량이 작고, 가격이 비싸다.


📍 캐시 메모리(cache memory)

CPU의 성능을 가늠할 수 있는 또 하나의 기준
SRAM(static RAM) 사용
보통 '캐시'라고 줄여부르는 캐시메모리는 CPU내부의 임시 저장공간으로, CPU가 데이터를 처리할 때 자주 사용하는 데이터를 임시로 보관하는 곳

  • CPU가 메모리에 접근하는 속도는 CPU의 연산속도보다 압도적으로 느림

  • 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리
    그러므로 캐시는 주기억장치보다 크기가 작을 수밖에 없다!
    캐시 기억장치와 주기억장치 사이에서 정보를 옮기는 것을 사상(Mapping,매핑)이라고 함

    매핑의 3가지 방법
    직접 매핑(Direct Mapping) 연관 매핑(Associate Mapping) 집합 연관 매핑(Set Associate Mapping)

  • 속도가 빠른 장치와 느린 장치간의 속도 차에 따른 병목현상을 줄이기 위한 범용 메모리
    이를 위해서는 CPU가 어떤 데이터를 원하는지 어느정도 예측할 수 있어야 함
    캐시 메모리에 CPU가 이후에 참조할, 필요있는 정보가 어느정도 들어있냐에 따라 캐시의 성능이 좌우되기 때문

    병목현상

    두 구성요소의 최대 성능의 차이로 인해 한 구성 요소가 다른 하드웨어의 잠재 성능을 제한하는 것을 의미

  • 주기억장치와 CPU사이에 위치

  • 메모리 계층 구조에서 가장 빠른 소자이며, 처리속도가 거의 CPU 속도와 비슷할 정도의 속도

  • 캐시메모리를 사용하면 주기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도 향상

  • 캐시의 크기는 보통 수십 KByte ~ 수백 KByte(레지스터보다 용량이 크다)

  • RAM이나 ROM은 CPU에 비해 동작속도가 훨씬 느리기 때문에 컴퓨터의 전반적인 처리속도가 저하될 수밖에 없다. == CPU의 캐시 메모리는 크면 클수록 성능이 향상!


  • 캐시메모리는 CPU 코어와의 위치에 따라 1차 캐시메모리(Level 1 cache memory)2차 캐시메모리(Level 2 cache memory), 3차 캐시메모리(Level 3 cache memory) 등으로 나뉜다.
    CPU와 가까운 곳에 위치한 캐시메모리 일수록 성능이 좋다.

📖 캐시(Cache)의 지역성(Locality)

  • 캐시가 효율적으로 동작하려면, 캐시의 적중률(Hit-rate)를 극대화 시켜야 함

  • 캐시에 저장할 데이터가 지역성(Locality)을 가져야함

    지역성(Locality)
    데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미

  • 지역성의 전제 조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access하지 않는다는 특성을 기본으로 함

  • 즉, 지역성(Locality)란!
    기억장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성

지역성의 종류

① 시간의 지역성

  • 특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것
  • 메모리 상의 같은 주소에 여러 차례 읽기 쓰기를 수행할 경우, 상대적으로 작은 크기의 캐시를 사용해도 효율성 ↑

② 공간적 지역성

  • 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우, CPU 캐시나 디스크 캐시의 경우 한 메모리 주소에 접근 할 때 그 주소 뿐 아니라 해당 블록을 전부 캐시에 가져오게 됨
  • 이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면, 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성 ↑
profile
언어는 거들 뿐...

0개의 댓글

Powered by GraphCDN, the GraphQL CDN