전체 글 58

[CS] 우리가 메모리라고 부르는 RAM과 종류

우리가 실행하는 대부분의 프로그램 은 `RAM`에 저장되어 있고, 일반적으로 메모리라고 부릅니다. 주기억 장치는 크게 RAM과 ROM으로 구분할 수 있습니다. RAM Random Access Memory의 약자로, 프로그램을 실행하거나 데이터를 처리하는 동안 임시로 필요한 정보를 저장하는 공간 `휘발성 메모리` : 전원을 끄면 RAM 저장된 내용(명령어+데이터)이 모두 날아감 크기 : 기가바이트(Gigabyte, GB) RAM 용량클수록 많은 프로그램을 동시에 실행할 수 있음 구분 주기억장치 (RAM) 보조기억장치 (SSD, HDD 등) 전원 종료시 메모리 휘발성 비휘발성 CPU 접근 여부 O X 저장되는 데이터 특성 실행할 대상 보관할 대상 RAM의 종류 DRAM(Dynamic RAM) : 데이터의 크..

CS 2024.04.17

[CS] 명령어와 파이프라이닝 간 함의 : CISC, RISC

2024.04.15 - [CS] - [CS] 효율적인 명령어 분배 : 명령어 파이프라인 명령어와 파이프라이닝 간 함의 모든 CPU가 이해할 수 있는 명령어가 똑같지 않고, CPU가 읽고 해석하고 실행하기에 최적화되지 않기도 합니다. 그래서 효율적으로 동작할 수 있게 즉, 파이프라이닝에 최적화된 명령어로 설계할 수 있어야 하는데요. ISA `ISA` : Instruction Set Architecture의 줄임말로, CPU가 이해할 수 있는 명령어들의 집합 구조 (= `CPU 언어`) CPU제조사마다 ISA 설계 원칙이 다릅니다. (Intel Vs. ARM) ISA가 다르면 1) CPU끼리 서로의 명령어를 이해할 수 없습니다. 2) HW 구조도 달라질 수 있습니다. → 명령어를 해석하는 제어장치 로직, 사..

CS 2024.04.15

[CS] 효율적인 명령어 분배 : 명령어 파이프라인

효율적인 명령어 분배 클럭속도, 멀티코어, 멀티스레드 뿐만 아니라, 명령어를 효율적으로 분배하여 CPU 동작간 불필요한 loss 줄여 성능을 높이는 방법 중 하나입니다. 이를 위해서 명령어 병렬 처리기법에 대해 알아볼 필요가 있습니다. 명령어 파이프라인 `슈퍼스칼라` : CPU 내부에 여러개의 명령어라인을 포함한 구조 (순차적 처리) 명령어 파이프라이닝 명령어를 순차적으로 진행하되, 겹치는 부분이 없게하여 동시에 처리 가능 장점 : 효율적 비순차적 명령어 처리 CPU 성능 향상에 크게 기여, 대부분 CPU가 차용함 데이터 의존성과 무관할 경우, 순서를 바꿔 실행함으로써 명령어 파이프라인이 멈추는 것을 방지하는 기법 명령어와 데이터간 의존관계를 잘 파악해야 합니다. 위 그림 기준, 살펴보겠습니다. M3는 ..

CS 2024.04.15

[CS] CPU 성능과 연관된 용어 : 클럭, 코어, 스레드

왜 해당 정보들을 알아야할까요? 컴퓨터 성능을 높이기 위해선 CPU 설계가 중요하고, 제목의 용어들은 CPU 사양과 밀접한 관련이 있습니다.CPU 구매자 입장에서 다나와 사이트만 검색해봐도 어떤 용어가 중요한지 한눈에 파악 가능합니다. 클럭 일반적으로 클럭 신호에 컴퓨터 부품들이 동작을 합니다. 그래서 클럭속도 = CPU 동작 속도로 간주되기도 합니다. (참조) 단위 : Hz 다만, 클럭속도'만' 빠르게 한다고 해서 CPU 성능이 기하급수적으로 빨라지진 않습니다. (발열과 같은 트레이드오프가 생길 수 있음) CPU 클럭속도 확인 (출처) 인텔 i7 기준, CPU 클럭 속도는 아래와 같습니다. 고성능을 요구하는 시점에 클럭 속도를 높이고, 아닐땐 낮추는 등 유연하게 동작을 합니다. 기본 클럭(Base) :..

CS 2024.04.14

[CS] 실행 흐름을 파악할 수 있는 레지스터의 종류

레지스터가 중요한 이유 CPU와 메모리 간, 데이터/명령어 송수신할때 반드시 `레지스터`에 저장됨 레지스터의 값만 잘 트래킹해도 프로그램 실행 흐름을 파악할 수 있음 레지스터 종류 프로그램 카운터(`PC`) : 메모리에서 가져올 명령어의 주소 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 → 제어장치가 명령어 레지스터의 명령어를 해석하여, 제어 신호를 발생시킴 메모리 주소 레지스터(`MAR`) : 메모리의 주소를 저장 (@주소 버스) 메모리 버퍼 레지스터(`MBR` or `MDR`) : 메모리와 주고받을 값을 저장 (@데이터 버스) 범용 레지스터 : 메모리 주소와 데이터 모두를 저장 (MAR + MBR 모두 커버) 플래그 레지스터 : CPU 상태에 대한 부가적인 정보 저장 스택 포인터(`SC`) ..

CS 2024.04.14