[컴퓨터 구조] 명령어 병렬 처리 기법
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 4. 11. 00:04[컴퓨터 구조] 명령어 병렬 처리 기법

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 빠른 CPU를 만들려면 빠른 클럭 속도에 멀티코어, 멀티스레드를 지원하는 CPU를 만드는 것도 중요하지만 CPU를 놀지 않게하고 효율적으로 작동시키는 것도 중요하다. CPU를 쉬지 않고 작동시키는 방법에는 명령어 병릴 처리기법이 있다. 명령어 병렬 처리기법에는 아래와 같은 종류가 있다. 명령어 파이프라이닝 슈퍼스칼라 비순차적 명령어 처리 명령어 파이프라인 하나의 명령어가 처리되는 전체과정을 클럭단위로 나누어 보면 아래와 같다. 명령어 인출(Instruction Fetch) 명령어 해석 (Instruction Decode) 명렁어 실행 (Execute Instruction..

[컴퓨터 구조] 빠른 CPU를 위한 설계 기법
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 4. 10. 00:04[컴퓨터 구조] 빠른 CPU를 위한 설계 기법

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. CPU의 성능을 높이기 위해서 아래 3개의 방법을 생각해 볼 수 있다. 클럭 신호를 빠르게 하는 방법 코어 수를 늘리는 방법 스레드의 수를 늘리는 방법 클럭 컴퓨터 부품들은 클럭 신호에 맞춰 움직인다. CPU는 명령어 사이클에 따라 명령어들을 실행한다. 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직이게 된다. 실제로 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다. CPU는 매번 일정한 클럭 속도가 아니라 고성능을 요구하는 순간에는 빠르고, 그렇지 않을 때는 느리게 작동한다. 최대 클럭 속도를 강제로 더 끌어올릴 수 있는데,..

[컴퓨터 구조] 명령어 사이클과 인터럽트
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 4. 9. 00:04[컴퓨터 구조] 명령어 사이클과 인터럽트

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. CPU는 명령어를 처리하는 과정에는 정해진 흐름이 있고, CPU는 그 흐름을 반복하여 명령어들을 처리해 나간다. 명령어를 정형화된 흐름으로 처리하는 것을 명령어 사이클이라고 한다. CPU는 명령어 사이클을 통해 작업을 처리해 나가는데, 이 흐름을 끊어지게 하는 상황이 발생하는데 이것을 인터럽트라고 한다. 명령어 사이클 CPU가 메모리에 저장된 명령어 하나를 실행한다고 하면, 가장 먼저 해야 할 일은 명령어를 CPU로 가져와야 한다. 명령어를 가져왔으면 명령어를 실행해야 한다. 이것을 실행 사이클이라고 한다. 인출 사이클 : 메모리에 있는 명령어를 가져오는 단계 실행 사이..

[컴퓨터 구조] 레지스터
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 3. 31. 00:37[컴퓨터 구조] 레지스터

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 반드시 알아야 할 레지스터 프로그램 카운터 명령어 레지스터 메모리 주소 레지스터 메모리 버퍼 레지스터 플래그 레지스터 범용 레지스터 스택 포인터 베이스 레지스터 프로그램 카운터 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소)를 저장 프로그램 카운터를 명령어 포인터라고 부르는 CPU도 있음 명령어 레지스터 방금 읽어 들어 들인 명령어를 저장하는 레지스터 제어장치는 명령어 레지스터 속 명령어를 받아들이고 해석한 뒤 제어 신호를 내보냄 메모리 주소 레지스터 메모리의 주소를 저장하는 레지스터 CPU가 읽고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소..

[컴퓨터 구조] ALU와 제어장치
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 3. 13. 00:30[컴퓨터 구조] ALU와 제어장치

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. ALU CPU 내부에는 ALU와 제어장치 그리고 여러 개의 레지스터가 있다. ALU는 계산을 담당하고, 제어장치는 명령어를 읽어 들이고 해석한다. 레지스터는 CPU 안에 있는 작은 임시 저장장치이다. ALU는 앞서 계산기와 같은 역할을 한다고 했다. 따라서 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행한다. 연산을 수행한 결과는 특정 숫자나 문자가 될 수 있고, 메모리 주소가 될 수 있다. 이러한 결괏값은..

[컴퓨터 구조] 명령어의 구조와 주소 지정 방식
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 3. 11. 21:40[컴퓨터 구조] 명령어의 구조와 주소 지정 방식

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 연산 코드와 오퍼랜드 명령어는 연산 코드와 오퍼랜드로 구성되어 있다. 연산 코드 오퍼랜드 위 그림의 색으로 칠해져 있는 필드 값, 즉 '명령어가 수행할 연산'을 연산 코드라 하고, 흰색 배경 필드 값, 즉 '연산에 사용할 데이터' 또는 '연산에 사용할 데이터가 저장된 위치'를 오퍼랜드라고 한다. 후자가 훨씬 더 많이 사용하므로 이를 주소 필드라고 부르기도 한다. 연산 코드는 연산자, 오퍼랜드는 피연산자라고도 부른다. 이를 간단한 그림으로 나타내면 아래와 같다. 명령어는 연산 코드와 오퍼랜드로 구성되어 있다. 연산 코드는 명령어가 수행할 연산이다. 오퍼랜드는 '연산에 사용..

[컴퓨터 구조] 고급 언어와 저급언어, 컴파일과 인터프리터
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 3. 9. 00:47[컴퓨터 구조] 고급 언어와 저급언어, 컴파일과 인터프리터

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 고급 언어와 저급 언어 우리 프로그램을 만들기 위해서 사용하는 언어는 컴퓨터가 이해하는 언어가 아닌 사람이 이해하기 쉽게 만들어진 언어이다. 사람이 이해하기 쉽게 만들어진 언어를 고급 언어라고 한다. 반대로 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급 언어라고 한다. 컴퓨터가 이해하고 실행할 수 있는 언어는 오직 저급 언어뿐이다. 그래서 고급 언어로 작성된 소스 코드는 반드시 저급 언어, 즉 명령어로 변환되어야 한다. 저급 언어는 아래와 같이 두 가지 종류가 있다. 기계어 어셈블리어 기계어 0과 1의 명령어 비트로 이루어진 언어이다. 2진수 또는 16진수로 표현된..

[컴퓨터 구조] 컴퓨터가 문자를 표현하는 방법
컴퓨터 구조 & 운영체제/컴퓨터 구조2023. 3. 7. 00:33[컴퓨터 구조] 컴퓨터가 문자를 표현하는 방법

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 문자 집합과 인코딩 문자 집합(character set) 컴퓨터가 이해할 수 있는 문자의 모음 인코딩 (encoding) 코드화하는 과정 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 디코딩(decoding) 코드를 해석하는 과정 0과 1로 표현된 문자 코드를 문자로 변환하는 과정 아스키 코드 아스키 코드란? 초창기 문자 집합 중 하나 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자 7비트로 하나의 문자 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트) 아스키 코드는 7bit를 표현할 수 있으므로 2⁷인 128개의 문자를 표현할 수 있다. ..

image