Computer Science
-
[Computer Science] CPU : 명령어 병렬 처리 기법Computer Science 2024. 5. 14. 23:37
CPU가 시간을 효율적으로 사용하기 위한 명령어 병렬 처리 기법에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'명령어 파이프라인 : 명령어 실행 단계 중 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있습니다.명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법입니다. 명령어 인출(Instruction Fetch)명령어 해석(Instruction Decode)명령어 실행(Execute Instruction)결과 저장(Write Back) 명령어 파이프라이닝에 실패하는 경우를 파이프라인 위험이라고 합니다.- 데이터 위험 (Data Hazard)- 제어 위험 (Control Hazard) - 구조적 위험 (St..
-
[Computer Science] CPU : 빠른 CPU를 위한 설계 기법Computer Science 2024. 5. 14. 22:09
빠른 CPU를 위한 다양한 설계 기법을 소개합니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위 클럭 속도 : 헤르츠(Hz) 단위로 측정헤르츠(Hz) : 1초에 클럭이 반복되는 횟수 (1초에 한 번 반복되면 1Hz, 1초에 100번 반복되면 100Hz) 일반적으로 클럭 속도를 높이면 CPU 속도가 빨라지지만, 필요 이상으로 클럭을 높일 시 발열 문제가 심각해집니다.그래서, 클럭 속도를 늘리는 방법 외에 코어 수를 늘리거나 스레드 수를 늘리면서 CPU의 속도를 향상시킵니다. 오늘날 CPU에는 명령어를 실행하는 부품이 여러개 존재하는데, 이 '명령어를 실행하는 부품'을 코어라고 합니다. ..
-
[Computer Science] CPU : 명령어 사이클과 인터럽트Computer Science 2024. 5. 10. 20:18
CPU의 작동원리 중 명령어 사이클과 인터럽트에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데, 이 주기를 명령어 사이클(인출-실행-간접)이라고 합니다.1. 인출 사이클 : 실행할 명령어를 CPU로 가져옵니다.2. 실행 사이클 : 가져온 명령어를 실행합니다.3. 간접 사이클 : 추가적으로 메모리에 접근해야 하는 경우(간접 주소 지정 방식 등) : 명령어 사이클 인터럽트란 CPU가 현재 실행 중인 프로그램을 중단하고 다른 코드를 실행하도록 요청하는 신호입니다.: CPU가 얼른 처리해야 할 다른 작업이 생겼을 때, CPU가 꼭 주목해야할 때 발생인터럽트의 종류에는 동기 인터럽트(예외), 비..
-
[Computer Science] CPU : 레지스터Computer Science 2024. 5. 10. 11:05
CPU를 구성하는 여러가지 부품 중 레지스터에 대하여 정리하였습니다. 참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제' 레지스터에는 여러 종류가 있지만, 반드시 알아야 할 레지스터는 다음과 같습니다.- 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소)> 프로그램 카운터를 Instruction Pointer(명령어 포인터)라고 부르는 CPU도 있습니다.- 메모리 주소 레지스터 : 메모리의 주소> CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터- 메모리 버퍼 레지스터 : 메모리와 주고받을 값(데이터와 명령어)> CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터- 명령어 레지스터 : 해석할 명령어 (..
-
[Computer Science] CPU : ALU와 제어장치Computer Science 2024. 5. 9. 21:04
CPU를 구성하는 여러가지 부품 중 ALU와 제어장치에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제' 1. 계산을 하기 위해서는 피연산자(from. 레지스터)와 수행할 연산(from. 제어장치)이 필요 2. 계산의 결괏값을 레지스터에 저장(숫자, 문자, 주소 등..)+. 메모리보다 레지스터에 접근하는 게 더 빠르기 때문에 레지스터에 저장합니다. 3. 연산 결과에 대한 부가 정보를 플래그 레지스터라는 특수한 레지스터에 저장(연산 결과가 음수이다, 연산 결과가 레지스터에 비해 너무 크다=오버플로우 등..) 플래그 레지스터 종류 :플래그 종류의미사용 예시부호 플래그연산한 결과의 부호를 나타낸다.부호 플래그가 1일 경우 계산 결과는 음수, 0일 경..
-
[Computer Science] 명령어 : 명령어의 구조Computer Science 2024. 5. 9. 16:03
명령어의 구조와 명령어의 주소지정 방식에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'명령어는 오퍼랜드와 연산 코드로 구성됨. Ex)"영수야 (오퍼랜드), 방 좀 치워줘! (연산 코드) ""멍멍아 (오퍼랜드), 이거 물어와! (연산 코드) " 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(=주소 필드)오퍼랜드는 0개일 수도, 1개일 수도, 2개 이상일 수도 있음 보통 오퍼랜드에는 연산에 사용될 데이터보다, 연산에 사용될 데이터가 저장된 위치가 훨씬 더 많이 저장됩니다. 명령어가 수행할 연산 다양한 연산코드가 있지만 공통적인 연상코드 종류- 데이터 전송- 산술/논리 연산- 제어 흐름 변경- 입출력 제어 데이터 전송MO..
-
[Computer Science] 명령어 : 소스 코드와 명령어Computer Science 2024. 5. 9. 15:07
작성한 소스코드가 어떻게 컴퓨터를 동작시키는 명령어로 변환되는지에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'고급 언어 : 개발자가 이해하기 쉽게 만든 언어(Java, Python, JavaScript,...)저급 언어(명령어) : 컴퓨터가 이해하고 실행하는 언어- 기계어 : 0과 1로 이루어진 명령어로 구성된 언어- 어셈블리어(Assemblier) : 기계어를 읽기 편한 형태로 번역한 언어 고급 언어는 저급 언어로 변환되어 컴퓨터에서 실행됩니다. : 어셈블리어 예시 +. 사용하는 CPU의 종류에 따라서, 컴파일러의 종류에 따라서 변환된 저급 언어의 모습은 달라질 수 있습니다. 고급 언어가 저급 언어로 변환되는 과정에는 크게 두 가지 방..
-
[Computer Science] 데이터 : 0과 1로 문자를 표현하는 방법Computer Science 2024. 5. 9. 10:53
0과 1밖에 이해하지 못하는 컴퓨터가어떻게 다양한 문자를 표현하고 이해하는지에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'문자집합 : 컴퓨터가 이해할 수 있는 문자의 모음인코딩 : 정보를 컴퓨터가 처리할 수 있는 이진 형태로 변환하는 과정(like 텍스트, 이미지, 오디오, 비디오 등)디코딩 : 인코딩된 이진 데이터를 다시 원래의 형태나 형식으로 변환하는 과정 초창기 문자 집합 중 하나알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자 표현 가능(총 128개의 문자 표현 가능)7비트로 하나의 문자 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit) 아스키 코드는 간단한 인코딩이 가능하다는 장점이 있지..