본문 바로가기

컴퓨터구조15

[혼자 공부하는 컴퓨터구조] 08. 입출력장치(I/O device) 08-1. 장치 컨트롤러(device controller)와 장치 드라이버(device driver) ** 입출력장치는 CPU, 메모리보다 다루기가 까다롭다. 이유는? 입출력장치에는 종류가 너무나도 많다. --> 키보드, 모니터, USB 메모리, CD-ROM, SSD, 마우스, 프린터, 스피커, 마이크 등 매우 많다. 장치가 이렇게 다양하면 자연스레 장치마다 속도, 데이터 전송 형식 등도 다양하다. 따라서 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어렵다. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. - 전송률(transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지 나타내는 지표 --> 전송률의 차이는 CPU와 메모리, 입출력장치 간의 .. 2023. 7. 29.
[혼자 공부하는 컴퓨터구조] 07. 보조기억장치 07-1. 다양한 보조기억장치 하드 디스크(HDD; Hard Disk Drive) : 자기적인 방식으로 데이터를 저장하는 보조기억장치 --> 데이터는 하드 디스크이 섹터, 트랙, 실린더에 저장된다. 탐색 시간(seek time): 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간 회전 지연(rotational latency): 헤드가 있는 곳으로 플래터를 회전시키는 시간 전송 시간(transfer time): 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간 플래시 메모리(flash memory) : 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치 NAND 플래시 메모리: NAND 게이트를 기반으로 만들어진 메모리 NOR 플래시 메모리: NOR 게이트를 기반으로 만들어진 메모리 ▷.. 2023. 7. 29.
[혼자 공부하는 컴퓨터구조] 06. 메모리와 캐시 메모리 ※ 주기억장치(main memory) RAM = '메모리' ROM 06-1. RAM의 특징과 종류 ▷ RAM의 특징 RAM: 휘발성 저장 장치(volatile memory) 보조기억장치: 비휘발성 저장 장치(non-volatile memory) ▷ RAM의 용량과 성능 : CPU RAM 보조기억장치 ▷ RAM의 종류 DRAM(Dynamic RAM): 시간이 지나면 저장된 데이터가 점차 사라지는 RAM --> 데이터 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장) 해야 한다. SRAM(Static RAM): 저장된 데이터가 변하지 않는 RAM, DRAM보다 일반적으로 속도가 더 빠르다. SDRAM(Synchronous DRAM): 클럭 신호와 동기화된 DRAM, 클럭에 맞춰 동작하며 클럭마다 .. 2023. 7. 29.
[혼자 공부하는 컴퓨터구조] 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.