221111

고먐미·2022년 11월 12일

CS에 관하여..

프로그래머는 컴퓨터의 특성을 잘 아는 것과 모르는 것은 차이가 크다고 한다.
그래서 오늘은 컴퓨터 특성.. 그 중 CPU에 대해 배우게 되었다.



Computer를 이루는 3대장

  • CPU
  • Memory
  • Disk

이 중 가장 중요한 것이 CPU이다.



CPU에 대하여..

일단 CPU 는 여러개의 Register 로 이루어져 있다고 한다.
그리고 우리가 흔히 말하는 코어가 이 Register 세트를 말한다고 한다.

결국 Register 세트(코어)는 빅맥 세트고, CPU는 맥도날드라고 생각하면 될 듯 하다.



CPU의 진화

요즘은 듀얼코어, 쿼드코어, 심지어는 헥사/옥타코어도 있는 것으로 보인다.

그렇다면 왜? 코어가 싱글 에서 멀티 로 바뀔 수 밖에 없었을까?
그건 바로 발열 때문이라고 한다.

물론 싱글코어에서 극한으로 성능을 올릴 수 있지만 무어의 법칙으로 인해 멀티코어로 진화할 수 밖에 없었다고 한다.

무어의 법칙??
-> 적어도 18개월마다 프로세스의 성능(트랜지스터 숫자)이 두 배씩 증가한다는 법칙
(기술 발전속도를 바탕으로 예상한 듯 하다)

아무튼 코어의 성능 향상에는 본질적인 한계가 있었다!
-> 이 때문에 "그럼.. 코어를 여러개 사용해버리자!" 라는 천재적인 인간들의 발상으로 인해 오늘날의 CPU는 싱글코어에서 멀티코어로 진화해버렸다.

그리고 이 멀티코어 CPU는 여러개의 State를 가질 수 있다! (State = Register들)



CPU 구조

  • ALU (Arithmetic Logic Uni / 산술논리연산) : 연산처리 원툴

  • CU (Control Unit / 제어창치) : 이게 진짜 뇌

  • Register (저장장치) : 범옹 레지스터, 특수 레지스터 2가지가 있음

    1. 범용 레지스터

      • EAX
      • ECX
    2. 특수 레지스터

      • PC 레지스터 (Program Counter)
      • 프로그램 카운터?
        레지스터 중 하나로, 명령어 포인터라고도 한다.
        명령을 얼마나 처리했는지 관리하는 것이 프로그램 카운터

  • Cache
    CPU작업을 처리하기 위해서 메인 메모리에 접근하는데 공간적으로 거리가 멀기 때문에 시간적 소요가 크다.
    그래서 CPU- Cache - Memory와 같은 구조로 자주 쓰거나 최근에 썼던 데이터를 캐시 메모리에 저장해 놓는다.
    그러면 CPU가 데이터에 접근할 때 걸리는 시간 소요를 줄일 수 있다.
    그러나 캐시의 일관성 문제에 대해 해결해야 한다.

    • Cache Coherence (캐시 일관성)
      공유 메모리 시스템에서 각 클라이언트가 가진 Local Cache 간의 일관성을 의미한다.


CPU와 프로그래머의 통신법

CPU는 binary 언어만 사용 할 수 있다. (이진수 / 01011001 과 같은..)
그렇다면 프로그래머는 CPU와 어떻게 통신할 수 있을까?

일단 프로그래머가 직접 어셈블리어로 짤 수 있다.

어셈블리어?
CPU가 읽을 수 있는 Binary 언어로 이루어진 명령어 조합

하지만 어셈블리어로 코드를 짜기에는 너무나도 어렵다.

그래서! C, C++, Java 등의 컴파일러라는 녀석들을 통해 기계어로 번역을 시킨다!!

ISA ( Instruction Set Architecture / 명령어 집합 구조 )

  • CISC ( Complex Instruction Set Computer / 복잡 명령어 집합 컴퓨터 )
  • RISC ( Reduced Instruction Set Computer / 축소 명령어 집합 컴퓨터 )
    요즘 쓰는 ISA, 간단해서 명령어 개수도 적고 조금 더 효율적으로 명령할 수 있게 한다. 요즘 대세라고 한다.


오늘은 이렇게 CS에 대해 알아보았는데.. 솔직하게 말하자면 잘 모르겠다...
점점 알아야 할 것 들이 많아져서 힘들어 ..

profile
개념을 이해하고 다른사람에게도 알려줄 수 있는 개발자가 되고 싶어요..

0개의 댓글