본문 바로가기

전공/컴퓨터 구조

(8)
장치 컨트롤러와 장치 드라이버, 프로그램 입출력 장치 컨트롤러의 역활 CPU와 입출력장치 간의 통신중개 오류 검출 데이터 버퍼링 데이터 레지스터 CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터 (버퍼) RAM을 사용하기도 함 상태 레지스터 상태 정보 저장 입출력자치가 입출력 작업을 할 준비가 되었는지 입출력 작업이 완료되었는지 입출력장치에 오류는 없는지 등의 상태 정보 제어 레지스터 입출력장치가 수행할 내용에 대한 제어 정보 장치 드라이버: 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램 프로그램 입출력: 입출력 명령어로써 컨트롤러와 상호작용 메모리에 저장된 정보를 하드 디스크에 백업 CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냄 하드 디스크 컨트롤러는 하드 디스크 상태 확인 => 상태 레지스터에 준비 완료 표시 메모..
보조기억장치 하드 디스크: 자기적인 방식으로 저장 하드 디스크가 저장된 데이터에 접근하는 시간 탐색 시간 회전 지연 전송 시간 플래시 메모리: 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치 NAND 플래시 메모리 NOR 플래시 메모리 RAID (Redundant Array of Independent Disks) 하드 디스크와 SSD로 사용하는 기술 데이터의 안전성 혹은 높은 성능을 위해 여러 물리적 보조기억장치를 하나의 논리적 보조기억장치럼 사용하는 기술 RAID 0: 데이터를 단순히 나누어서 정하는 방식 RAID 1: 복사본을 만드는 방식 RAID 4: RAID 1처럼 완전한 복사본을 만드는 대신 패리티 비트를 저장 RAID 5: 패리티 정보를 분산해서 저장 RAID 6: 두 정류의 패리티(오류를 검출하고 ..
RAM의 특성과 종류 RAM (주기억장치) 많은 프로그램을 동시에 실행하는 데에 유리하다. RAM의 종류 DRAM (Dynamic RAM) 저장된 데이터가 동적으로 사라짐 데이터 소멸을 막기 위해 주기적으로 재활성화 해야 함. SRAM (Static RAM) 저장된 데이터가 정적인 RAM DRAM보다 빠름 DRAM SRAM 재충전 필요함 필요 없음 속도 느림 빠름 가격 저렴함 비쌈 집적도 높음 낮음 소비 전력 적음 높음 사용 용도 주기억장치 (RAM) 캐시 메모리 SDRAM (Synchronous DRAM): 한 번에 하나 발전한 DRAM 클럭 신호와 동기화된 DRAM DDR SDRAM (Double Data Rate SDRAM): 한 번에 두개 발전한 SDRAM 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 메모리의 주소공간..
CPU) 설계, 병렬 처리, CISC & RISC CPU 컴퓨터 부품들은 '클럭 신호'에 맞춰 움직인다. CPU는 '명령어 사이클'에 맞춰 명령어들을 실행한다. CPU의 속도을 증가시키는 방법 클럭 속도: Hz 코어 수 증가 스레드 수 증가 Core (코어) thread (스레드): 실행 흐름의 단위 하드웨어적 스레드 (논리 프로세서): 하나의 코어가 동시에 처리하는 명령어 단위 레지스터가 중요함 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위 명령어 파이프라인 파이프 라인 순서 명령어 인출 (Instruction Fetch) 명령어 해석 (Instruction Decode) 명령어 실행 (Execute Instruction) 결과 저장 (Write Back) 파이프라인 위험 데이터 위험: 명령어 간의 의존성에 의해 생김, 이전 명령어..
CPU) ALU와 제어장치, 레지스터, 명령어 사이클과 인터럽트 ALU: 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아드림 제어장치 레지스터: CPU 내부의 작은 임시저장장치 프로그램 카운터: 메모리에서 가져올 명령어의 주소 (메모리에서 읽어 들일 명령어의 주소) 명령어 레지스터: 해석할 명령어 (방금 메모리에서 읽어 들인 명령어) 메모리 주소 레지스터: 메모리의 주소 (CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터) 메모리 버퍼 레지스터: 메모리와 주고받을 값 (데이터와 명령어) 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용 스택 포인터: 스택과 스택 포인터를 이용한 주소 지정 방식 베이스 레지스터: 기준 주소 저장 주소 지정 방식 스택 ..
소스코드와 명령어 #include int main(){ printf("Hello World"); return 0; } 고급 언어(C, Python 등등) => 저급 언어 저급 언어 기계어: 0과 1로 이루어진 명령어 어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역 0101 0101 >>>> push rbp 0101 1101 >>>> pop rbp 1100 0011 >>>> ret 고급 언어를 저급 언어로 변환하는 방식 (컴파일 / 인터프리트) 컴파일 언어 소스코드 >>> 컴파일러 >>> 목적 코드 (test.c) => 전처리기 (test.i) >>> 컴파일러 (test.s) >>>> 어셈블러 (test.o) >>>> 링커 => (test.exe) 전처리 과정: #include, #define 등 컴파일하기..
데이터) 0과 1로 숫자 / 문자를 표현하는 방법 정보단위 bit(비트): 0과 1을 표현하는 가장 작은 정보 단위 2^n가지의 정보 표현 가능 1byte 8bit 1kB 1,000byte 1MB 1,000kB 1GB 1,000MB 1TB 1,000GB c.f) 이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB, ... 워드(word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 이진법: 0과 1로 숫자 표현하기 숫자가 1을 넘어가는 시점에 자리올림 1 = 1 2 = 10 3 = 11 4 = 100 5 = 101 5 = 110 0b1000 보수 표현하기: 모든 0과 1을 뒤집고 1을 더한 값 1 1 0 0 0 1 16진법 숫자가 15를 넘어가는 시점에 자리올림 ox15 이진수 => 16진수 변환 16진수 => 이진수 문자 집합과 인코..
컴퓨터 구조 큰 그림 컴퓨터 구조를 알아야 하는 이유? 같은 코드를 짜도 다른 컴퓨터에서 오류가 남 => 컴퓨터를 분석하는 능력 컴퓨터 구조 = 성능, 용량, 비용 고려하기 위함 컴퓨터 구조의 큰 그림 컴퓨터가 이해하는 정보 데이터: 숫자, 문자, 이미지, 동영상과 같은 정보 (0과 1로 숫자 / 문자 표현) 명령어: 컴퓨터를 실질적으로 움직이는 정보, 데이터는 명령어를 위한 재료 ex) "Hello World" 출력 컴퓨터의 네 가지 핵심 부품 CPU 메모리(주기억장치): RAM / ROM 보조기억장치: SSD 입출력장치: 키보드 메인보드: 4가지 부품을 연결함 메모리: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 (운영체제 페이징을 통해 해결 가능) *주소 개녕* 프로그램이 실행되기 위해서는 메모리에 저장되어..

728x90