CS 13

[혼자 공부하는 컴퓨터 구조+운영체제] 6. 메모리와 캐시 메모리

RAM의 특징과 종류 주기억장치(메인 메모리) 종류에는 크게 RAM과 ROM 두 가지가 있고, ‘메모리’라는 용어는 그 중 RAM으ㄹ 지칭하는 경우가 많다 RAM의 특징 휘발성 저장 장치 RAM의 종류 DRAM (Dynamic RAM) 저장된 데이터가 ‘동적으로 사라지는’ RAM 데이터 소멸을 막기 위해서 주기적으로 재활성화(Refresh) 해야 함 일반적으로 메모리로 사용되는 DRAM 상대적으로 소비전력이 낮고 저렴하고 집적도가 높아 대용량으로 설계하기 용이함 SDRAM (Synchronus RAM) DRAM이 발전한 형태 클럭 신호와 동기화된 DRAM DDR SDRAM (Double Data Rate SDRAM) SDRAM이 발전한 형태 가장 대중적으로 사용하는 RAM 대역폭을 넓혀 속도를 빠르게 만..

CS 2023.05.03

[혼자 공부하는 컴퓨터 구조+운영체제] 5. 빠른 CPU를 위한 설계 기법 - 명령어 집합 구조, CISC와 RISC

명령어가 어떻게 생겨야 명령어 파이프라이닝에 유리할까요? CPU는 명령어를 실행한다 명령어 집합 구조(ISA) CPU가 이해할 수 있는 명령어들의 모음 CPU의 언어라고 볼 수 있음 소프트웨어를 어떻게 이해할지에 대한 약속 명령어의 집합 구조가 달라지면 그에 대한 나비효과로 많은 것들이 달라진다 명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성 명령어 집합의 두 축: CISC & RISC CISC(Complex Instruction Set Computer) 복잡한 명령어 집합을 활용하는 컴퓨터(CPU) 복잡하고 다양한 수의 가변길이 명령어 집합을 활용함 ex) x86, x86-64 다양하고 강력한 명령어를 활용 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있음 다양한 주소 지정 ..

CS 2023.05.02

[혼자 공부하는 컴퓨터 구조+운영체제] 5. 빠른 CPU를 위한 설계 기법 - 명령어 병렬 처리 기법

CPU가 시간을 알뜰하게 쓰면서 명령어를 처리할 수 있는지에 대한 것 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면? 명령어 인출(Instruction Fetch) 명령어 해석(Instruction Decode) 명령어 실행(Execute Instruction) 결과 저장(Write Back) 명령어 파이프라인 동시에 여러 개의 명령어를 겹쳐 실행하는 기법 같은 단계가 겹치지만 않는다면 CPU는 ‘각 단계를 동시에 실행할 수 있다’ 파이프라인 위험 명령어 파이프라인이 성능 향상에 실패하는 경험 데이터 위험 명령어 간의 의존성 때문에 생기는 위험 모든 명려어를 동시에 처리할 수는 없다 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우 제어 위험 프로그램 카운터의 갑작스러운 변화 때문에 생..

CS 2023.05.02

[혼자 공부하는 컴퓨터 구조+운영체제] 5. 빠른 CPU를 위한 설계 기법 - 코어와 멀티코어

💡 키워드 클럭 코어 & 멀티코어 스레드 & 멀티 스레드 컴퓨터 부품들은 ‘클럭 신호’에 맞춰 일사불란하게 움직인다. CPU는 ‘명령어 사이클’이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 코어와 멀티코어 코어란? 현대적인 관점에서 “CPU”라는 용어를 재해석 해야 함 명령어를 실행하는 부품 전통적으로 ‘명령어를 실행하는 부품’은 원칙적으로 하나만 존재 But 오늘날 CPU에는 ‘명령어를 실행하는 부품’이 여러 개 존재 스레드와 멀티 스레드 스레드란? 실행 흐름의 단위 하드웨어적 스레드 하나의 코어가 동시에 처리하는 명령어 단위 하나의 코어가 여러 개의 명령어를 동시에 처리하는 프로세서(CPU) → 멀티 스레드 프로세서, 멀티스레드 CPU 논리 프로세서라고도 부른다 레지스터 세트 하나의 명령어를 실행하..

CS 2023.05.02

[혼자 공부하는 컴퓨터 구조+운영체제] 4. CPU의 작동 원리 - 명령어 사이클과 인터럽트

명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행 이 주기를 명령어 사이클이라고 함 메모리에 저장된 명령어를 CPU가 실행하려면? 인출 사이클 실행 사이클 그런데 CPU로 명령어를 가지고 와도 바로 실행이 불가능한 경우도 있음 인터럽트 CPU가 꼭 주목해야할 때, CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 → 발생 동기 인터럽트(예외) CPU가 예기치 못한 상황을 접했을 때 발생 비동기 인터럽트(하드웨어) 주로 입출력장치에 의해 발생하는 다른 하드웨어가 보내주는 인터럽트 왜 쓰나? CPU가 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용 인터럽트의 처리 순서 입출력장치는 CPU에게 인터럽트 요청 신호를 보낸다 CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인..

CS 2023.04.30

[혼자 공부하는 컴퓨터 구조+운영체제] 4. CPU의 작동 원리 - 레지스터

레지스터 CPU 내부에 있는 작은 임시저장장치 프로그램 속 명령어, 데이터는 실행 전후로 레지스터에 저장 레지스터마다 각기 다른 역할이 있음(CPU 종류마다 레지스터의 종류는 다름) 레지스터의 종류(8개) 프로그램 카운터(Instruction Pointer = 명령어 포인터) 메모리에서 읽어 들일 명령어의 주소 명령어 레지스터 해석할 명령어(방금 메모리에서 읽어 들일 명령어) 메모리 주소 레지스터 CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터(메모리 주소) 메모리 버퍼 레지스터 CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터(데이터와 명령어) 플래그 레지스터 연산 결과 또는 CPU 상태에 대한 부가적인 정보 범용 레지스터 다양하고 일반적인 상황에서 자유롭게 사용 스택 ..

CS 2023.04.30

[혼자 공부하는 컴퓨터 구조+운영체제] 4. CPU의 작동 원리 - ALU와 제어장치

ALU 계산기 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 받아들임 제어장치 제어 신호를 발생시키고 명령어를 해석하는 장치 클럭 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위 플래그 CPU가 연산 결과로서 받아들이는 부가 정보 2023.04.28 - [CS] - [혼자 공부하는 컴퓨터 구조+운영체제] 3. C언어의 컴파일 과정 [혼자 공부하는 컴퓨터 구조+운영체제] 3. C언어의 컴파일 과정 C언어의 컴파일 과정 전처리(preprocess) 본격적으로 컴파일 하기 전에 준비 작업 외부에 선언된 다양한 소스 코드, 라이프러리 포함(e.g. #include) 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. d wiwi-si.tistory.com 출처 [무료] 개발자..

CS 2023.04.30

[혼자 공부하는 컴퓨터 구조+운영체제] 3. C언어의 컴파일 과정

C언어의 컴파일 과정 전처리(preprocess) 본격적으로 컴파일 하기 전에 준비 작업 외부에 선언된 다양한 소스 코드, 라이프러리 포함(e.g. #include) 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. define) 컴파일할 영역 명시(e.g. #if, #ifdef, …) 컴파일 전처리가 완료되어도 여전히 소스 코드 전처리 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환 어셈블 어셈블리어를 기계어(0과 1)로 변환 목적 코드를 포함하는 목적 파일이 됨 목적 파일 vs 실행 파일 목적 파일과 실행 파일은 둘 다 기계어로 이루어진 파일 목적 파일은 링킹을 거친 이후에 실행 파일이 됨 링킹 각기 다른 목적 파일을 연결해 하나의 실행 파일로 만드는 작업 2023.04.28 - [CS] -..

CS 2023.04.28

[혼자 공부하는 컴퓨터 구조+운영체제] 3. 명령어의 구조

명령어의 구조 명령어는 연산 코드와 오퍼랜드로 구성 연산 코드 == 수행할 연산 데이터 전송 MOVE, STORE, LOAD(FETCH), PUSH, POP 산술/논리 연산 제어 흐름 변경(특정 메모리 주소로 실행의 순서를 점프해서 옮기는 연산 코드) 입출력 제어 오퍼랜드 연산에 사용될 데이터 연산에 사용될 데이터가 저장된 위치(주소 필드) 기계어, 어셈블리어도 명령어다 명령어 주소 지정 방식(addressing modes) 유효 주소를 찾는 방법 연산에 사용할 데이터가 저장된 위치를 찾는 방법 다양한 주소 지정 방식들 즉시 주소 지정 방식(immediate addressing mode) 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시 가장 간단한 형태의 주소 지정 방식 연산에 사용할 데이터의 크기가 ..

CS 2023.04.28

[혼자 공부하는 컴퓨터 구조+운영체제] 3. 소스 코드와 명령어

소스 코드와 명령어 고급 언어와 저급 언어 고급 언어: 개발자가 읽고 쓰기 편하게 만들어진 언어 저급 언어(명령어): 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 기계어 0과 1로 이루어진 명령어로 구성된 저급 언어 어셈블리어 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어 컴파일 언어로 작성된 소스 코드는 컴파일러에 의해 저급 언어로 변환되고(컴파일), 컴파일 결과 저급 언어인 목적 코드가 생성됨컴파일 언어 인터프리트 언어 인터프리터에 의해 한 줄씩 운영 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음컴파일 언어와 인터프리트 언어 출처 [무료] 개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제 - 인프런 | 강의 베스트셀러 『혼자 공부하는 컴퓨터 구조 +..

CS 2023.04.28