본문 바로가기

분류 전체보기103

[혼자 공부하는 컴퓨터구조] 05. CPU 성능 향상 기법 05-1. 빠른 CPU를 위한 설계 기법 클럭(clock) 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. ▶ 클럭 속도(Hz) : 1초에 클럭이 몇 번 반복되는가? 클럭 속도를 높이는 것은 분명 CPU를 빠르게 만들지만, 클럭 속도만으로 CPU의 성능을 올리는 것에는 한계가 있다. 코어(core)와 멀티코어(multi-core) ▶ 코어(core): 명령어를 실행하는 부품; CPU(ALU, 레지스터, 제어장치) ▶ 멀티코어(multi-core): 명령어를 실행할 수 있는 하드웨어 부품(코어)이 CPU 안에 두 개 이상 있는 CPU 멀티코어의 처리 속도는 단일 코어보다 빠르다. 그러나 CPU의 연산 속도가 꼭 코어의 수.. 2023. 7. 29.
[혼자 공부하는 컴퓨터구조] 04-3. 명령어 사이클과 인터럽트 명령어 사이클(instruction cycle) 프로그램은 수많은 명령어들로 이루어져 있고, CPU는 이 명령어들을 하나씩 실행한다. 이때 프로그램 속 각각의 명령어들은 일정한 주기로 반복되며 실행되는데, 이 주기를 명령어 사이클(instruction cycle)이라고 한다. 인출 사이클(fetch cycle): 메모리에 있는 명령어를 CPU로 가지고 오는 단계 실행 사이클(execution cycle): CPU로 가져온 명령어를 실행하는 단계; 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시킨다. 간접 사이클(indirect cycle): 어떤 명령어는 인출과 실행 사이클만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다. 인터럽트(interrupt) 동기 .. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 04-2. 레지스터 반드시 알아야 할 레지스터 ▶ 프로그램 카운터(PC; Program Counter) : 메모리에서 읽어들일 명령어의 주소를 저장하는 레지스터 ▶ 명령어 레지스터(IR; Instruction Register) : 메모리에서 읽어들인 명령어의 주소를 저장하는 레지스터 --> 제어장치: 명령어 레지스터 속 명령어를 받아들이고 이를 해석한 뒤, 제어 신호를 내보낸다. ▶ 메모리 주소 레지스터(MAR; Memory Address Register) : 메모리 주소를 저장하는 레지스터 --> CPU: 읽어들이고자 하는 주소 값을 주소 버스로 보낼 때, 메모리 주소 레지스터를 거치게 된다. ▶ 메모리 버퍼 레지스터(MBR; Memory Buffer Register) : 메모리와 주고받을 값(데이터, 명령어)을 저장하는.. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 04-1. ALU와 제어장치 ALU ▶ ALU가 받아들이는 정보 : ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행한다. ▶ ALU가 내보내는 정보 : ALU는 결괏값을 메모리가 아닌 레지스터에 우선 저장한다. 또, 계산 결과와 더불어 플래그(flag)를 내보낸다. ※ 플래그(flag)의 종류 부호 플래그: 연산한 결과의 부호를 나타낸다. 제로 플래그: 연산 결과가 0인지 여부를 나타낸다. 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다. 오버플로우 플래그: 오버플로우가 발생했는지를 나타낸다. 인터럽트 플래그: 인터럽트가 가능한지를 나타낸다. .. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 03-2. 명령어의 구조 연산 코드와 오퍼랜드 ▶ 명령어 연산 코드(operation code): 연산자; 명령어가 수행할 연산 오퍼랜드(operand): 피연산자; 연산에 사용할 데이터/연산에 사용할 데이터가 저장된 위치 --> 기계어, 어셈블리어 또한 명령어이기 때문에 연산 코드(operation code)와 오퍼랜드(operand)로 구성되어 있다. 오퍼랜드(operand) 오퍼랜드 필드에는 연산에 사용할 데이터를 직접 명시하기보다는 많은 경우 데이터가 저장된 위치를 명시한다. 연산 코드(operation code) ▶ 데이터 전송 MOVE: 데이터를 옮겨라. STORE: 메모리에 저장하라. LOAD(FETCH): 메모리에서 CPU로 데이터를 가져와라. PUSH: 스택에 데이터를 저장하라. POP: 스택의 최상단 데이터를 .. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 03-1. 소스 코드와 명령어 고급 언어와 저급 언어 ▶ 고급 언어(high-level programming language): 사람을 위한 언어 ▶ 저급 언어(low-level programming language): 컴퓨터가 직접 이해하고 실행할 수 있는 언어 기계어(machine code): 0과 1의 명령어 비트로 이루어진 언어 어셈블리어(assembly language): 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어 컴파일 언어와 인터프리터 언어 : 고급 언어를 저급 언어로 변환하는 방식 ▶ 컴파일 언어 --> 컴파일 --> 저급 언어(목적 코드) 컴파일 언어: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 컴파일(compile): 컴파일 언어로 작성된 소스 코드 전체를 저급 .. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 02. 데이터 02-1. 0과 1로 숫자를 표현하는 방법 정보 단위 1비트(1bit): 0과 1을 나타내는 가장 작은 정보 단위 --> 2^1 개의 정보 표현 가능 1바이트(1byte): 8비트 --> 2^8 개의 정보 표현 가능 1킬로바이트(1kB): 1,000바이트(1,000byte) 1메가바이트(1MB): 1,000킬로바이트(1,000kB) 1기가바이트(1GB): 1,000메가바이트(1,000MB) 1테라바이트(1TB): 1,000기가바이트(1,000GB) 워드(word): CPU가 한 번에 처리할 수 있는 데이터 크기 이진법(binary) : 0과 1만으로 모든 숫자를 표현하는 방법 ▶ 이진수의 음수 표현 2의 보수(two's complement): 모든 0과 1 뒤집기 --> 1 더하기 십육진법 : 0 1 2.. 2023. 7. 27.
[혼자 공부하는 컴퓨터구조] 01-2. 컴퓨터 구조의 큰 그림 컴퓨터 구조 ▶ 컴퓨터가 이해하는 정보 데이터 명령어 ▶ 컴퓨터의 네 가지 핵심 부품 중앙처리장치(CPU) 주기억장치(메모리; main memory) 보조기억장치(secondary storage) 입출력장치(I/O device) 컴퓨터의 네 가지 핵심 부품 메모리(main memory) : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 주소(address) 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다. 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다. 메모리에 저장된 값의 위치는 주소(address)로 알 수 있다. CPU ▶ ALU(Arithmetic Logic Unit): 계산기 ▶ 레지스터(Register): CPU 내부의 작은 임시 저장 장치, 프로그램.. 2023. 7. 27.
[키워드로 풀어본 컴퓨터구조] 04. 캐쉬 메모리(Cache Memory) 캐쉬 메모리(Cache Memory) Cache Memory는 메인 메모리와 CPU 간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는 CPU 내 또는 외에 존재하는 메모리이다. 전체 시스템의 성능을 개선시킬 수 있는 메모리이다. Cache Memory는 CPU와 메인 메모리 사이에 존재한다고 말할 수 있는데, CPU 내에 존재할 수도 있고, 역할이나 성능에 따라서는 CPU 밖에 존재할 수도 있다. 빠른 CPU의 처리속도와 상대적으로 느린 메인 메모리에서의 속도의 차이를 극복하는 중간 버퍼 역할을 한다. 쉽게 표현하면, CPU는 빠르게 일을 진행하고 있는데, 메모리에서 데이터를 가져오고 가져가는 것이 느려서 중간에 미리 CPU에 전달될 데이터를 들고 서 있는 형태라고 말할 수 있다. Cache Memo.. 2023. 7. 22.