TIL 11.11

새양말·2022년 11월 11일
0

내일배움캠프TIL

목록 보기
5/74
post-thumbnail

컴퓨터의 간단 구조: cpu + memory + disk

cpu: 중앙 처리 장치. 가져오기, 디코딩, 실행

명령어 fetch
cu가 디코딩 - opcode(operation code)를 해석
실행 execute - ALU산술논리를 씀. 프로세서 간에 경쟁 가능성있음
WB(write back) - operand에 반영

*명령어는 opcode + operand로 이뤄져있다. (명령어에서 실제로 어떤 동작을 하는지, 명령코드가 연산할 대상인 피연산자)

  1. 데이터를 가져오기(Fetch)
    데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달됩니다. 각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 알아야 합니다.
    명령어는 프로그램 카운터(PC)에 의해 보관됩니다. 그런 다음 PC와 명령문은 IR(지침 레지스터)에 배치됩니다.
    그리고 PC 길이는 다음 명령문의 주소를 참조하기 위해 증가됩니다.

  2. 디코딩(Decoding)
    일단 명령을 가져와 IR에 저장하면 CPU는 명령 해독기라는 회로로 명령을 전달합니다.
    명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환됩니다.

  3. 실행(Execute)
    마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
    결과는 대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.

CPU 내부 코어 개수 기준

  1. 싱글코어 프로세서
    하나의 CPU 안에 하나의 코어만 탑재된 형태. 과거에는 이러한 형태의 CPU들 뿐이었으나 2000년대부터 멀티코어 개념이 적용된 CPU가 등장하면서, 요즘의 싱글코어는 저가형 인터넷 공유기 등 특수 목적의 용도로만 쓰인다.
  2. 멀티코어 프로세서
    하나의 CPU 안에 복수의 코어들이 탑재된 형태. 2001년부터 멀티코어 프로세서가 등장하고 2005년부터 컨슈머용 시장에서도 대중화되면서, CPU를 가리킬 때 멀티라고 하면 멀티 프로세서보단 멀티코어 프로세서를 가리키는 말로 더 익숙해져 있다.
    코어 하나에 n개의 register로 구성됨
    코어 개수만큼 register도 늘어남
    멀티하게 state를 가진다..
    이유는 무어의 법칙 때문에! 일년마다 성능이 2배씩 증가...?
    코어의 성능 향상엔 본질적 한계가 있어서 코어의 개수를 늘려서 발열을 획기적으로 줄임!
    (회로가 타버리기 때문에)

cpu구성:
[출처] CPU 구조 : 산술논리연산장치(ALU) , CU , 레지스터|작성자 김지훈
CU (Control Unit) : 명령 제어장치 , 입력된 명령어를 해독하여 cpu내부의 움직임을 총괄하고 각과정을 통제한다.

주로 데이터를 메모리로부터 ALU로 옮기라는 명령과 그 후 다시 메모리로 옮기는 명령을 내린다.

  1. 산술논리연산 ALU (Arithmetic Logic Unit) :
    산술연산장치 , CU로부터 명령을 받아 cpu로 들어온 모든 데이터들을 산술연산, 논리연산한다.
    (산술연산 : 덧셈과 같은 숫자 계산 , 논리연산 : 대수비교, 저장등)

  2. 중앙제어유닛 CU (control unit) :
    프로그램이 실행 될 때 CU에서 아래와 같이 순서대로 처리한다.
    인출 : 메모리에 있는 프로그램 데이터를 cpu로 불러오는 작업이다.
    해석 : CU에서 불러온 명령어를 해석한다.
    실행 : CU에서 해석한 명령어를 ALU가 연산한다.
    쓰기 : 결과 나오고, 변경된 부분을 저장한다면 다시 메모리로 보내어 기록시킨다.

  3. 레지스터 Register:
    cpu내부에 있는 저장장치로 주기억장치인 램보다 빠른 속도로 cpu에 정보를 제공하는 역할을 한다.주로 한 개의 코어에 여러 개의 레지스터로 구성되고, 업무에 따라 범용 레지스터 general - purpose, 특수용 레지스터 pecial - purpose 로 나눌 수 있다.
    (ex. PC레지스터: 프로그램카운터. 명령 실행 후 레지스터의 상태를 증가시켜서 현재 처리된 명령어의 개수를 확인함.)

  4. 캐시 cache:
    컴퓨터 과학에서 빈번하게 쓰이거나 최근에 쓰인 데이터를 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 cpu와 disk 사이의 거리를 좁히는 역할을 하여 걸리는 시간을 절약할 수 있다.
    *캐시 일관성 Cache Coherence:
    공유 메모리 시스템에서 각 클라이언트(혹은 프로세서)가 가진 로컬 캐시 간의 일관성을 의미한다.
    각 클라이언트가 자신 만의 로컬 캐시를 가지고 다른 여러 클라이언트와 메모리를 공유하고 있을 때, 캐시의 갱신으로 인한 데이터 불일치 문제가 발생한다.
    캐시 일관성을 유지한다고 하는 것은 이러한 데이터 불일치 현상을 없애는 것을 의미한다.

cpu와 프로그래머는 어떻게 통신하나?
cpu는 바이너리 원툴만 이해한다.(기계어 010101001....같은)
프로그램은 기계어 사용 불가!
1. 프로그래머가 직접 어셈블리어를 작성한다. -> 개발자 허들 존재.
2. 프로그램 언어로(c, java같은 컴파일러) 코딩해서!

*명령어 세트 아키텍처(ISA) 방식

  • CISC (Complex Instruction Set Computer) 방식 CPU:
    초기에 CPU가 원칩 형태로 등장하기 이전부터 발전해 왔던 명령어셋을 사용한 CPU. RISC에 비해 시간이 오래 걸린다.
  • RISC (Reduced Instruction Set Computer) 방식 CPU:
    80년대부터 문제로 지적된 명령어셋의 복잡화와 그로 인한 CPU설계의 복잡화를 해결하기 위해 등장한, 간략화된 명령어셋을 도입한 CPU.
    대부분의 현용 CPU 아키텍처가 RISC 방식 명령어를 채택하고 있다.
profile
매번 기합넣는 양말

0개의 댓글