일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 분류
- regression
- LLM
- GPT-4
- LG
- 딥러닝
- gpt
- LG Aimers
- Classification
- ChatGPT
- 지도학습
- 오블완
- 티스토리챌린지
- OpenAI
- deep learning
- PCA
- supervised learning
- 회귀
- 머신러닝
- AI
- 해커톤
- LG Aimers 4th
- Machine Learning
- Today
- Total
목록Computer Architecture + Operating System (11)
SYDev
CPU 언어인 ISA가 무엇인지 이해하고, 현대 CPU 주요 설계 방식인 CISC와 RISC의 정의와 차이점에 대해 알아보자. 명령어 집합 명령어 집합(instruction set) 혹은 명령어 집합 구조(ISA; Instruction Set Architecture): CPU가 이해할 수 있는 명령어들의 모음 ISA가 같은 CPU끼리는 서로의 명령어 이해 가능, ISA가 다르면 서로의 명령어 이해하지 못함. CISC CISC(Complex Instruction Set Computer): 복잡하고 다양한 종류의 가변 길이 명령어 집합을 활용하는 CPU 적은 수의 명령어로 프로그램을 실행할 수 있다. -> 메모리 공간 절약 하지만, 활용하는 명령어가 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기, 실행..
명령어를 빠르고 효율적으로 처리하는 대표적인 명령어 병렬 처리 기법인 명령어 파이프라이닝, 슈퍼 스칼라, 비순차적 명령어 처리에 대해 알아보자. 명령어 파이프라인 명령어 파이프라이닝: 동시에 여러 개의 명령어를 겹쳐 실행하는 기법 단계가 겹치지만 않으면 명령어를 동시에 처리할 수 있다. 파이프라인 위험 데이터 위험 데이터 위험(data harzard): 명령어 간 '데이터 의존성'에 의해 발생 명령어1: R2 레지스터와 R3 레지스터에 저장된 값을 더한 값을 레지스터 R1에 저장 명령어2: R1 레지스터와 R5 레지스터에 저장된 값을 더한 값을 레지스터 R4에 저장 -> 명령어2는 명령어1보다 먼저 실행될 수 없음 제어 위험 제어 위험(control harzard): 분기 등으로 인한 '프로그램 카운터의..
클럭과 코어, 스레드라는 개념을 학습하고, 빠른 CPU를 만드는 설계 기법인 멀티 코어와 멀티 스레드를 이해해보자. 클럭 클럭 속도가 높은 CPU는 빠르게 작동한다. 클럭 속도는 헤르츠(Hz) 단위로 측정한다. 1초에 100번 반복되면 100Hz 오버클럭킹(overclocking): 순간적으로 최대 클럭 속도를 강제로 끌어올려 성능을 향상시키는 기법 코어와 멀티코어 코어: CPU 내에서 명령어를 실행하는 부품 멀티코어 프로세서: 여러 개의 코어를 포함하는 CPU (dual-core, triple-core, quad-core, hexa-core ...) 스레드와 멀티스레드 스레드(thread)는 '실행 흐름의 단위'로, 하드웨어적 스레드와 소프트웨어적 스레드가 있다. 하드웨어적 스레드: 하나의 코어가 동시..
학습 목표 CPU가 하나의 명령어를 처리하는 흐름인 명령어 사이클과 그 흐름을 방해하는 인터럽트에 대해 학습 명령어 사이클 명령어 사이클(instruction cycle): 하나의 명령어를 처리하는 정형화된 흐름, 프로그램 속 각각의 명령어들은 명령어 사이클이 반복되며 실행된다. 인출 사이클(fetch cycle): 메모리에 저장된 명령어를 CPU로 가져오는 단계 실행 사이클(execution cycle): CPU로 가져온 명령어를 실행하는 단계, 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계 간접 사이클(indirect cycle): 명령어의 주소를 CPU로 가져왔을 때, 해당 명령어 주소에 저장된 명령어를 인출하기 위해 메모리에 다시 접근하는 단계 인터럽트 인터럽트(i..
학습 목표 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장되므로, 레지스터만 잘 관찰해도 CPU가 돌아가는 상황을 어느정도 파악할 수 있다. 이런 레지스터의 종류와 역할을 학습하고, 각 레지스터를 통해 명령어가 처리되는 과정을 이해해보자. 주요 레지스터 8종 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장, 명령어 포인터(IP; Instruction Pointer)라고도 불림 명령어 레지스터: 메모리에서 가져온 명령어를 저장 메모리 주소 레지스터: 메모리의 주소를 저장, CPU에서 주소 버스로 보내기 전 거치는 레지스터 메모리 버퍼 레지스터: 메모리와 주고받을 데이터와 명령어를 저장, 데이터 버스로 이동하기 전 거치는 레지스터 프로그램 카운터에 저장된 명령어의 주소 -> 메모리 주소 ..
학습 목표 ALU와 제어장치가 어떤 정보를 내보내고 받아들이는지를 중심으로 두 장치의 역할을 학습 ALU ALU가 받아들이는 정보 피연산자 from 레지스터 제어 신호 form 제어장치 받아들인 제어 신호를 통해 피연산자로 산술 연산, 논리 연산 등을 수행 ALU가 내보내는 정보 연산 결과 to 레지스터 -> ALU가 연산할 때마다 결과를 메모리에 저장하면 CPU가 메모리에 자주 접근하는데, 이는 레지스터에 접근하는 것보다 속도가 느리기 때문에 프로그램 속도가 느려짐 플래그 to 플래그 레지스터 플래그: 연산 결과에 대한 추가적인 상태 정보 ALU가 내보내는 대표적인 플래그는 아래와 같다. 플래그 종류 의미 연산 결과 부호 플래그 연산한 결과의 부호를 나타낸다. 플래그가 1일 경우 음수, 0일 경우 양수..
학습 목표 명령어를 자세히 살펴보며 연산 코드, 오퍼랜드, 주소 지정 방식 개념을 학습 연산코드와 오퍼랜드 명령어는 연산 코드와 오퍼랜드로 구성됨 연산 코드(operation): 명령어에서 수행할 연산을 의미하는 부분 오퍼랜드(operand): 명령어에서 '연산에 사용할 데이터' 또는 '연산에 사용할 데이터가 저장된 위치'를 의미하는 부분 연산 코드(연산자) 오퍼랜드(피연산자) 더해라 100과 120을 빼라 메모리 32번지 안의 값과 메모리 33번지 안의 값을 저장해라 10을 메모리 128번지에 연산 코드 필드: 연산 코드가 담기는 영역 오퍼랜드 필드: 오퍼랜드가 담기는 영역 pushrbp movrbp, rsp movDWORD PTR [rbp-4], 1 addeax, edx poprbp ret 위는 어셈..
학습 목표 프로그래밍 언어로 작성한 소스 코드가 컴퓨터 내부에서 명령어로 변환, 실행되는 과정을 학습 고급 언어와 저급 언어 고급 언어(high-level programming language): 컴퓨터가 이해하는 언어가 아닌 사람이 이해하고 작성하기 쉽게 만들어진 언어 저급 언어(low-level programming language): 컴퓨터가 직접 이해하고 실행할 수 있는 언어 고급 언어로 작성된 소스 코드가 실행되기 위해서는 저급 언어(명령어)로 변환되어야 한다. 저급 언어에는 기계어와 어셈블리어가 있다. 기계어: 0과 1의 명령어 비트로 이루어진 언어(가독성을 위해 십육진수로 표현하기도 함) 어셈블리어: 0과 1로 표현된 명령어를 읽기 편한 형태로 번역한 언어 기계어 어셈블리어 0101 0101..