Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 코딩클럽(부트캠프) 1장 CPU 와 메모리 본문

Computer Science

스파르타 코딩클럽(부트캠프) 1장 CPU 와 메모리

H.S-Backend 2024. 3. 15. 14:52
출처 : 스파르타 코딩클럽
출처 : 스파르타 코딩클럽
입출력장치 : 컴퓨터가 사용자와 의사소통 하는 장치

 

입력장치 : 사용자가 컴퓨터에게 명령하는 창구
입력장치의 종류 : 키보드, 마우스, 터치스크린, 마이크, 스캐너, 카메라 등
사용자는 입력장치들을 통해 컴퓨터에게 명령을 요청하거나 데이터를 입력.
우리는 키보드를 통해 파일에 문자를 입력하도록 명령하고 연산을 작성한뒤 엔터키를 눌러서 연산수행 및 저장을 할 수 있다.
또한, 마우스를 통해 폴더를 열거나 파일 실행하도록 명령하고 컴퓨터 설정을 변경 할 수 있다.

 

출력장치 : 컴퓨터가 사용자에게 데이터를 보여주거나 처리결과를 보여주는 창구
출력장치의 종류 : 모니터, 스피커, 프린터 등
컴퓨터는 출력 장치들을 통해 사용자에게 명령이나 데이터를 입력 할 수 있는화면을 보여줘나 명령에 대한 처리결과를 보여주거나 들려준다.

CPU : 컴퓨터가 사용자의 명령에 대한 작업을 수행하는 처리장치
CPU의 동작
컴퓨터의 모든 데이터는 "기계어(0,1)" 저장.
기계어를 모스부호처럼 하드웨어적으로 CPU가 알아볼 수 있게 변환한 것 - 어셈블리어.
어셈블리어를 사람이 알아볼 수 있게 소프트웨어적으로 변환한 것 - 프로그래밍 언어.
기계어(저장공간) > 어셈블리어(CPU) > 프로그래밍 언어 (사람)
CPU가 명령어를 읽고 수행하는 동작
  1. 명령어 인출 - CPU가 수행할 명령어 정보를 가져온다.
  2. 명령어 해독 - opcode 라고 하는 명령어 코드를 인출하고 opcode의 성격에 맞게 레지스터를 준비
  3. 실행 - 해독된 명령어를 수행  EX ) 산술/논리 관련된 연산 - ALU 실행
  4. 반영 - 수행 결과를 반영
CPU스펙
  • 클럭 -CPU 내부에서 일정한 주파수를 가지는 신호
1Hz(헤르츠)면 1초에 한 번의 주기, 1기가 헤르츠라고 하면 1초에 1기가만큼(1024메가), 즉 10억번 처리할 수 있다.
ex) 4.5GHz 라는 것은 초당 45억 번의 명령어를 처리 할 수 있다는 뜻
따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 한다.
  • 코어 - 중앙처리 장치 역할을 하는 블록
멀티코어들은 싱글코어에 비해서 마치 여러개의 CPU가 작동하듯이 많은 연산을 빠르게 병렬처리 할 수 있다.
컴퓨터의 전체적인 성능은 CPU, 메모리 만으로 결정되지 않는다.
하지만 가장 중요한 부분이라고 할 수 있는건 CPU.

 

출처 스파르타 코딩클럽
산술논리 연산장치(ALU) : 비교, 판단, 연산을 담당
연산장치(ALU) : 논리연산(덧셈, 뺄셈, 비교연산) 을 수행
제어부(CU)와 내부 버스 : 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어
  • 제어장치 (CU) : 제어장치는 명령어를 실행하는 순서를 제어하고 스케쥴링 한다.
  • 제어부 : 주기억 장치에 저장되어 있는 명령어를 순서대로 호출하여 해독하고, 제어 신호를 발생시켜 컴퓨터의 각 장치를 동작하도록 하는 장치.
  • 내부버스 : 기억, 연산 ,제어 기능을 실현하기 위한 CPU와 주기억 장치, 입출력 장치, 외부 기억 장치, 주변장치, 통신 처리 장치 등의 제어부 사이를 연결하는 버스
레지스터 : 처리할 명령어를 저장
레지스터는 연산에 필요한 데이터를 저장하고 빠른속도로 접근할 수 있는 저장공간
프로세서 레지스터 : 프로세서에 위치한 고속 메모리로 극히 소량의 데이터나 처리 중인 중간 결과와도 같은 프로세서가 바로사용 할 수 있는 데이터를 담고 있는 영역
  • 범용레지스터 : 연산에 필요한 데이터나 연산결과를 임시로 저장
  • 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터
특수목적 레지스터의 종류 
  1. 메모리 주소 레지스터 (MAR) : 읽고 쓰기 위한 주기억장치의 주소를 저장
  2. 프로그램 카운터(PC) : 다음에 수행할 명령어의 주소를 저장
  3. 명령어 레지스터(IR) : 현재 실행중인 명령어를 저장
  4. 메모리 버퍼 레지스터(MBR) : 주기억장치에서 읽어온 데이터나 저장할 데이터를 임시로 저장
  5. 누산기(AC, ACCUMULATOR) : 연산 결과를 임시로 저장
  6. 캐시 메모리 (L1) : 처리속도를 높여주는 역할

제어장치 (CU) : 제저장치는 명령어를 실행하는 순서를 제어하고 스케쥴링 한다.


메모리 
출처 : 스파르타 코딩클럽
  • 레지스터 = CPU
  • 캐시메모리(SRAM), 메인 메모리(DRAM) = 주 기억장치
  • 하드디스크(HDD) = 보조기억장치
캐시메모리(L2, L3) 란 
  1. 캐시 메모리는 컴퓨터가 전원이 꺼지면 지워지지만 제일 빠르게 조회 할 수 있는 저장공간
  2. 컴퓨터 시스템 향상을 위해 CPU와 주기억장치 사이에 있는 아주 작은 비싼 메모리
CPU구성 캐시메모리와 캐시모메리에 차이는?
CPU 구성중에 있는 캐시메모리는 L1
메모리 그룹에 속한 CPU와 별개로 구성 되어있는 캐시메모리 L2, L3
  • L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상 시켜줌
L2, L3 캐시메모리 VS CPU레지스터
L2, L3 캐시메모리는 CPU 별도의 공간, 메인 메모리와 CPU간의 속도차이를 극복하기 위한것.
CPU레지스터는 CPU안에서 연산을 처리하기 위하여 데이터를 저장하는 공간

 

주 기억장치 : 컴퓨터가 전원이 꺼지면 지워지지지만 조금 더 빠르게 조회할 수 있는 저장공간
메인메모리 = 주기억장치= RAM
RAM : Random Access Memory
RAM은 DRAM과 SRAM이 있는 데 주 기억장치는 주로 DRAM을 의미
(SRAM은 캐시나 레지스트리)
  • 컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리
  • 전원이 꺼지면 메모리에 저장된 내용들은 모두사라지기 떄문에 컴퓨터가 꺼진 이후에도 데이터를 유지하고 싶을경우 하드디스크에 저장
  • 보조기억장치(하드디스크)보다 접근이 빠르다.
  • 모든프로그램은 컴퓨터에서 실행되기 위해 메모리의 일부를 사용한다.
  • HDD-RAM-CPU와 유사한 방식으로 연산과정의 중간에 위치
  • HDD에 비해 월등히 빠른 속도로 CPU가 정보를 원활히 이용할 수 있도록 한다.
  • CPU가 사용하기 좋도록 각종 정보를 임시 저장하는 휘발성 장치
SRAM-Static RAM
  • 정적 메모리
  • 전원 공급이 되는 동안은 기록된 내용이 지워지지 않기에 재충전X
  • 접근 속도가 빠르고 가격이 비싸다는 특징
  • 주로 캐시메모리나 레지스터로 사용
DRAM - Dynamic RAM
  • 동적 메모리
  • 전원이 계속 공급되더라도 주기적으로 재충전되어야 기억된 내용이 유지된다.
  • 주로 대용량의 기억장치에 사용되며 가격이 저렴
  • 주로 RAM 이라고 표현하는 것(주기억장치)은 거의 DRAM이라고 한다.
보조기억장치 : 컴퓨터의 전원이 꺼져도 지워지지 않는 저장공간
  • 사용자가 사용하고자 하는 데이터와 프로그램을 반영구적으로 저장
  • 전원을 끄더라도 저장된 데이터나 정보가 날아가지 않는 비휘발성 메모리
그렇기에 우리가 설치하는 모든 프로그램이나 파일들은 이곳에 반영구적으로 저장된다.

CPU와 메모리의 동작
  1. 주기억장치입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
  3. 주기억장치 처리결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력시킨다.
  4. CPU내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어한다.

CPU와 메모리의 구조

하버드구조
출처 : 스파르타 코딩클럽
  • 명령어 메모리 = 프로그램에서 사용할 명령어를 모아둔 메모리
  • 명령어 메모리 -> 제어장치 : 명령어 대한 정보를 보내준다.
  • 데이터 메모리 = 명령어들로 사용될 메모리
  • ALU = 데이터를 가지고 명령어를 읽어서 연산수행
장점 : 메모리가 두개이기 때문에 역할이 나누어져 있으며 속도가 빠르다.
단점 : 구성이 많기 때문에 비싸며, 복잡한 구성으로 고장이 날 확률이 높다

폰노이만 구조
출처 : 스파르타 코딩클
  • 보조기억장치에서 데이터들이 CPU에서 연산되기 위해 하나의 메모리에 올라간다.
  • 제어장치는 산술논리장치에 데이터가 메모리 어디에 위치한지 알려주는 역할을 한다.
  • 프로그램 메모리와 데이터 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있다. 이로인해 병목현상이 일어남.
개선된 구조
  • 하버드 구조 + 폰노이만 구조
  • CPU의 캐시 메모리 형상에 관여
  • CPU 내부 - 하버드 : CPU 내부에 캐시를 둬서 RAM과  CPU 간의 속도차이를 줄이려고 노력한다.
  • CPU 외부- 폰노이만 : 메모리 하나에 하나의 버스를 가지는 구조이기 때문에 병목현상이 아직까지는 존재한다.

 

CPU의 성능

 
32비트 또는 64비트 프로세서 : 데이터를 처리할 수 있는 수준
 
프로세서는 한 단어의 비트 양에 의해 제한된다.
 첫 32비트 설계 당시 32비트는 엄청 큰 데이터 였으나 무어의 법칙을 통해
CPU가 발전됨으로 64비트 프로세서 개발을 통해 4GB 이상의 RAM을 처리할 수 있게 되었다.
허나 모든 프로그램이 64비트를 지원하지 않기에 모든걸 처리할 수는 없다.
 

 

CPU의 동작

데이터를 가져오기, 디코딩, 실행 = CPU의 전부

 

데이터를 가져오기(Fetch)

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

디코딩(Decoding)

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

실행(Execute)

마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
결과는 대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.
계산기의 메모리 기능처럼 생각하시면 쉽게 이해하실 수 있습니다.

반응형