다시 정리하는 CS 이론
-
캐시 히트(Cache Hit) 와 미스(Cache Miss) ― “명령어·데이터가 어디에 있느냐가 속도를 좌우한다”캐시가 하는 일, 10초 요약CPU ↔ DRAM 속도 차가 수 10 배 이상 → 중간에 SRAM 캐시(L1/L2/L3) 를 끼워서 ‘자주 쓰는 데이터’를 가까운 곳에 복사해 둔다.히트: CPU가 요구한 주소가 이미 캐시에 있음 → 수 ns 내 응답.미스: 캐시에 없음 → DRAM(또는 하위 캐시)까지 내려가 수 10 ns~㎲ 지연 후 캐시에 라인(line) 단위로 불러와 재시도.명령어 사이클 관점으로 보면 Memory 단계에서 AGU→MAR→(Cache) 시점에 히트/미스가 갈린다.미스가 나면 CU가 파이프라인을 스톨하거나 OoO 코어는 다른 μop로 지연을 ‘가린다’. 지역성(locali..
캐시 히트와 미스 탐구캐시 히트(Cache Hit) 와 미스(Cache Miss) ― “명령어·데이터가 어디에 있느냐가 속도를 좌우한다”캐시가 하는 일, 10초 요약CPU ↔ DRAM 속도 차가 수 10 배 이상 → 중간에 SRAM 캐시(L1/L2/L3) 를 끼워서 ‘자주 쓰는 데이터’를 가까운 곳에 복사해 둔다.히트: CPU가 요구한 주소가 이미 캐시에 있음 → 수 ns 내 응답.미스: 캐시에 없음 → DRAM(또는 하위 캐시)까지 내려가 수 10 ns~㎲ 지연 후 캐시에 라인(line) 단위로 불러와 재시도.명령어 사이클 관점으로 보면 Memory 단계에서 AGU→MAR→(Cache) 시점에 히트/미스가 갈린다.미스가 나면 CU가 파이프라인을 스톨하거나 OoO 코어는 다른 μop로 지연을 ‘가린다’. 지역성(locali..
2025.05.01 -
CPU Instruction Cycle단계 핵심 전용 레지스터 세부 흐름 (→ 는 데이터 이동) 메모1️⃣ FetchPC(Program Counter) → MAR → Memory → MDR → IR① PC 값을 MAR에 복사 (주소 버스)② I-Cache/TLB 경유하여 명령어 읽기③ 읽어온 32/64 bit 코드를 MDR(Memory Data Register) 에 임시 저장④ MDR 내용을 IR(Instruction Register) 로 이동⑤ PC ← PC + len (또는 분기·예외로 덮어쓰기)“주소 지시 = MAR, 데이터 수신 = MDR, 보관 = IR”2️⃣ Decode (ID)IR, 레지스터 파일• CU가 IR → opcode·오퍼랜드 분해• 레지스터 파일에서 src 값 읽기• 의존성·Haz..
명령어 사이클과 인터럽트CPU Instruction Cycle단계 핵심 전용 레지스터 세부 흐름 (→ 는 데이터 이동) 메모1️⃣ FetchPC(Program Counter) → MAR → Memory → MDR → IR① PC 값을 MAR에 복사 (주소 버스)② I-Cache/TLB 경유하여 명령어 읽기③ 읽어온 32/64 bit 코드를 MDR(Memory Data Register) 에 임시 저장④ MDR 내용을 IR(Instruction Register) 로 이동⑤ PC ← PC + len (또는 분기·예외로 덮어쓰기)“주소 지시 = MAR, 데이터 수신 = MDR, 보관 = IR”2️⃣ Decode (ID)IR, 레지스터 파일• CU가 IR → opcode·오퍼랜드 분해• 레지스터 파일에서 src 값 읽기• 의존성·Haz..
2025.05.01 -
ALU ‧ 제어장치(CU) ‧ 레지스터 ― “CPU 속 3대 핵심 블록” 심화 노트회로 세부·최신 마이크로아키텍처 관점을 덧붙여 정리했습니다.1. ALU (Arithmetic Logic Unit)포인트 상세 설명역할정수 덧셈·뺄셈·증가/감소, 논리 AND/OR/XOR/NOT, 시프트·회전, 비교, 비트 카운트 등하드웨어 핵심• 가산기: Carry-Lookahead Adder(CLA)로 리플-캐리 지연을 O(log n)로 단축 ([PDF] Lecture 8:, [Carry Look-Ahead Adder입력ⓐ 두(또는 그 이상) 오퍼랜드 → 레지스터 파일에서 읽음 ⓑ 연산 선택 코드 → 제어장치가 ALU Control 라인으로 전송출력ⓐ 결과 → 레지스터 파일로 Write-back ⓑ 플래그 비트 → 플래그..
ALU, 제어장치, 레지스터ALU ‧ 제어장치(CU) ‧ 레지스터 ― “CPU 속 3대 핵심 블록” 심화 노트회로 세부·최신 마이크로아키텍처 관점을 덧붙여 정리했습니다.1. ALU (Arithmetic Logic Unit)포인트 상세 설명역할정수 덧셈·뺄셈·증가/감소, 논리 AND/OR/XOR/NOT, 시프트·회전, 비교, 비트 카운트 등하드웨어 핵심• 가산기: Carry-Lookahead Adder(CLA)로 리플-캐리 지연을 O(log n)로 단축 ([PDF] Lecture 8:, [Carry Look-Ahead Adder입력ⓐ 두(또는 그 이상) 오퍼랜드 → 레지스터 파일에서 읽음 ⓑ 연산 선택 코드 → 제어장치가 ALU Control 라인으로 전송출력ⓐ 결과 → 레지스터 파일로 Write-back ⓑ 플래그 비트 → 플래그..
2025.05.01 -
0. 큰 그림 잡기**명령어(Instruction)**는 CPU가 이해-실행할 수 있도록 비트 수준으로 인코딩된 최소 단위입니다.가장 일반적인 틀은┌──────────┬──────────┬────────────┐│ Opcode │ Operand │ … Fields │└──────────┴──────────┴────────────┘Opcode (Operation Code) – “무슨 연산을 하라”는 코드Operand Field(s) – “어떤 데이터/주소에 대해 하라”는 정보(선택) Address-mode bits, Immediate, Condition, Shift, Predication 등 추가 메타데이터 (Instruction Formats in Computer Architecture - Tu..
명령어의 구조0. 큰 그림 잡기**명령어(Instruction)**는 CPU가 이해-실행할 수 있도록 비트 수준으로 인코딩된 최소 단위입니다.가장 일반적인 틀은┌──────────┬──────────┬────────────┐│ Opcode │ Operand │ … Fields │└──────────┴──────────┴────────────┘Opcode (Operation Code) – “무슨 연산을 하라”는 코드Operand Field(s) – “어떤 데이터/주소에 대해 하라”는 정보(선택) Address-mode bits, Immediate, Condition, Shift, Predication 등 추가 메타데이터 (Instruction Formats in Computer Architecture - Tu..
2025.05.01 -
C++ 실습 예시 — 정적(static) vs 동적(dynamic) 링크아래의 “Hello Library” 예제를 따라 해 보면 두 링크 방식의 빌드 명령·실행 파일 크기·런타임 동작 차이를 직관적으로 확인할 수 있습니다.1. 공통 소스 — 라이브러리와 메인hello.hpp#pragma oncevoid hello(); // 인사 함수만 선언hello.cpp#include #include "hello.hpp"void hello() { std::cout main.cpp#include "hello.hpp"int main() { hello(); return 0;}2. 정적 링크 (라이브러리 코드를 실행 파일에 포함)# 1) 객체 파일 생성g++ -c hello.cpp -o hello.o# 2..
C++ 실습 : 정적 링크 VS 동적 링크C++ 실습 예시 — 정적(static) vs 동적(dynamic) 링크아래의 “Hello Library” 예제를 따라 해 보면 두 링크 방식의 빌드 명령·실행 파일 크기·런타임 동작 차이를 직관적으로 확인할 수 있습니다.1. 공통 소스 — 라이브러리와 메인hello.hpp#pragma oncevoid hello(); // 인사 함수만 선언hello.cpp#include #include "hello.hpp"void hello() { std::cout main.cpp#include "hello.hpp"int main() { hello(); return 0;}2. 정적 링크 (라이브러리 코드를 실행 파일에 포함)# 1) 객체 파일 생성g++ -c hello.cpp -o hello.o# 2..
2025.05.01 -
핵심 정리저급 언어- 기계어(0·1 비트열)와 어셈블리어(기계어를 사람이 읽기 쉬운 Mnemonic 으로 치환)로 구성- “컴퓨터가 곧바로 실행 가능”고급 언어- 인간 친화적 구문(C, C++, Java, Python 등)- 실행 전 반드시 저급 언어로 변환해야 함컴파일 방식- 컴파일 → 목적코드 → 링크 → 실행 파일 순서로 한 번만 변환- 실행 단계는 곧바로 네이티브 코드라 속도↑인터프리터 방식- 실행 때마다 한 줄씩 해석·실행 → 별도 실행 파일 없음- 수정·테스트 즉시 반영되지만 속도↓“둘은 배타적” 오개념 경계- Java · Python처럼 컴파일+인터프리터+JIT 혼합 모델이 보편 더 깊게 들어가기 — 6가지 학습 포인트주제 보충 설명 예시1. 프로그래밍 언어 세대(Generation)1세대..
컴퓨터 구조론 컴퓨터 언어와 차이의 이해핵심 정리저급 언어- 기계어(0·1 비트열)와 어셈블리어(기계어를 사람이 읽기 쉬운 Mnemonic 으로 치환)로 구성- “컴퓨터가 곧바로 실행 가능”고급 언어- 인간 친화적 구문(C, C++, Java, Python 등)- 실행 전 반드시 저급 언어로 변환해야 함컴파일 방식- 컴파일 → 목적코드 → 링크 → 실행 파일 순서로 한 번만 변환- 실행 단계는 곧바로 네이티브 코드라 속도↑인터프리터 방식- 실행 때마다 한 줄씩 해석·실행 → 별도 실행 파일 없음- 수정·테스트 즉시 반영되지만 속도↓“둘은 배타적” 오개념 경계- Java · Python처럼 컴파일+인터프리터+JIT 혼합 모델이 보편 더 깊게 들어가기 — 6가지 학습 포인트주제 보충 설명 예시1. 프로그래밍 언어 세대(Generation)1세대..
2025.05.01