728x90
반응형
SMALL

#들어가며

이번 장에서 언급하는 입출력 장치는 보조기억장치도 포함

#CPU - 입출력장치 정보 주고받기

입출력 장치는 앞서 학습한 CPU, 메모리보다 다루기가 더 까다롭습니다.

#장치 컨트롤러

#장치 컨트롤러의 역할

장치 컨트롤러가 CPU와 입출력장치 간의 통신중개 역할을 해줌으로써 일종의 번역가 역할을 수행합니다.

오류 검출은 입출력 장치에 문제가 있지는 않은지

데이터 버퍼링은 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법

#장치 컨트롤러의 구조

상태 레지스터와 제어 레지스터는 하나의 레지스터(상태/제어 레지스터)로 사용되기도 함

주고 받는 데이터로는 데이터, 상태 그리고 제어가 있습니다.

상태와 제어 레지스터는 하나에 쓰이기도 합니다.

#장치 컨트롤러의 구조

- 데이터 레지스터

  - CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터 (버퍼)

  - RAM을 사용하기도 

- 상태 레지스터

  - 상태 정보 저장

    - 입출력 장치가 입출력 작업을 할 준비가 되었는지,

    - 입출력 작업이 완료되었는지,

    - 입출력장치에 오류는 없는지 등의 상태 정보

- 제어 레지스터

  - 입출력장치가 수행할 내용에 대한 제어 정보

#장치 드라이버

장치 컨트롤러의 동작을 감지하고 제어하는 프로그램

장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어적인 통로라면,

장치 드라이버는 입출력장치를 연결하기 위한 소프트웨어적인 통로

#장치 컨트롤러

#장치 드라이버

컴퓨터가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있음

반대로 컴퓨터가 장치 드라이버를 인식하거나 실행할 수 없다면 그 장치는 컴퓨터 내부와 정보를 주고받을 수 없음

운영체제가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있음

반대로 운영체제가 장치 드라이버를 인식하거나 실행할 수 없다면 그 장치는 컴퓨터 내부와 정보를 주고 받을 수 없음

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

#RAID의 정의

#RAID 0

- 스트라입 (stripe) : 마치 줄무늬처럼 분산되어 저장된 데이터

- 스트라이핑 (striping) : 분산하여 저장하는 것

#RAID 1

#RAID 4

RAID 1보다 적은 하드 디스크로도 데이터를 안전하게 보관

패리티 비트는 오류 검출만 가능할 뿐 오류 복구는 불가능

한 하드 디스크에 패리티 비트가 몰려있으면 쓰기량이 3개의 하드 디스크에서 사용되기 때문에 아무래도 병목현상이 생길 수 밖에 없겠다.

#RAID 5

#RAID 6

오타: RAID 5보다 느림

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

#하드 디스크

#하드 디스크 - 구성

#하드 디스크 - 저장 단위

데이터는 플래터에 저장이 되는데, 크게 트랙과 섹터 단위로 데이터가 저장됨

트랙은 전체 원이다. 이를 나누어서 섹터 단위로 나뉜다.

하나 이상의 섹터를 묶어 블록이라고 표현 하기도 함.

연속된 정보는 한 실린더에 기록

#하드 디스크 - 데이터 접근 과정

하드 디스크가 CPU에 의해서 저장된 데이터에 접근하는 시간은 크게 3가지로 나뉩니다. 

탐색 시간, 회전 지역, 전송 시간입니다.

나노초는 10의 -9승분의 초다.

#하드 디스크 - 직접 눈으로 살펴보자

'hard drive running'

'hard drive in slow motion'

Youtube에 이를 검색하면 하드 디스크가 동작하는 그 모습을 눈으로 확인해 볼 수 있다.

#플래시 메모리

#플래시 메모리의 종류

- NAND 플래시 메모리 - NAND 연산을 수행하는 회로 게이트를 사용하는 플레시 메모리, 주로 사용됨

- NOR 플래시 메모리 - NOR 연산을 수행하는 회로 게이트를 사용하는 플레시 메모리

#셀 (cell)

- 플래시 메모리에서 데이터를 저장하는 가장 작은 단위

- 이 셀이 모이고 모여 수 MB, GB, TB 저장 장치가 된다

한 셀에 저장할 수 있는 비트에 따라 수명과 가격 및 성능이 결정된다.

#SLC

#MLC

#TLC

읽기와 쓰기는 페이지 단위로 이루어짐

삭제는 (페이지보다 큰) 블록 단위로 이루어짐

플래시 메모리는 하드 디스크와 달리 덮어쓰기가 불가능

A만 A'로 수정한다면

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

#저장 장치 계층 구조

1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.

2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

레지스터 vs 메모리(RAM) vs USB 메모리

낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 속도의 저장 장치를 원한다면 작은 용량과 비싼 가격은 감수해야

저장 장치들은 'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낼 수 있음

#캐시 메모리

- CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치

- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생

- "CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리니, 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 쓰자"

#참조 지역성의 원리

CPU가 자주 사용할 법한 내용을 예측하여 저장

 

 

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

논리 주소와 물리 주소로 주소 공간을 나눈 이유?

논리 주소를 물리 주소로 변환하는 방법?

#물리 주소와 논리 주소

CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까요?

NO

메모리에 저장된 값들은 시시각각 변하기 때문

- 새롭게 실행되는 프로그램은 새롭게 메모리에 적재

- 실행이 끝난 프로그램은 메모리에서 삭제

- 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐

- 물리 주소

  - 메모리 입장에서 바라본 주소

  - 말 그대로 정보가 실제로 저장된 하드웨어상의 주소

- 논리 주소

  - CPU와 실행 중인 프로그램 입장에서 바라본 주소

  - 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소

#물리 주소와 논리 주소의 변환

그렇다면 물리 주소와 논리 주소 간의 변환은 어떻게 이루어질까?

물리 주소에는 겹치는 주소가 없다. CPU와 메모리가 상호작용을 하려면 논리 주소를 물리 주소로 변환하는 과정이 필요하다.

#베이스 레지스터

프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장하는 셈, 논리 주소와 물리 주소의 거리인 셈

#논리 주소

프로그램의 시작점으로부터 떨어진 거리인 셈

#메모리 보호

만일 메모리에 저장되는 주소가 겹쳐도 괜찮을까?

NO

#한계 레지스터

- 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음

- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장

- 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

"주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, '메모리'라는 용어는 그 중 RAM을 지칭한느 경우가 많다."

RAM이 크면 정확히 뭐가 좋을까? DRAM? SRAM? SDRAM? DDR SDRAM? 이것들은 뭘까?

#RAM의 특징

전원이 꺼져도 저장될 수 있는 보조기억장치가 필요하다. 예) 하드디스크, CD ROM, USB

중요한 것은 메모리 그 중 RAM은 전원이 꺼지면 저장된 내용을 잃어버린다.

RAM을 휘발성 저장 장치, 보조기억장치를 비휘발성 저장 장치

#RAM의 용량과 성능

"RAM이 크면 뭐가 좋을까?"

"RAM의 용량은 컴퓨터 성능에 어떤 영향을 미칠까?"

RAM이 클 경우,

#RAM의 종류

  • DRAM (Dynamic RAM)
    • Dynamic = '동적의'
    • 저장된 데이터가 동적으로 사라지는 RAM
    • 데이터 소멸을 막기 위해 주기적으로 재활성화 해야
    • 일반적으로 메모리로 사용되는 RAM (상대적으로 소비전력이 낮고 저렴하고 집적도가 높아 대용량으로 설계하기 용이하기 때문)
  • SRAM (Static RAM)
    • Static = '정적의'
    • 저장된 데이터가 정적인 (사라지지 않는) RAM
    • DRAM 보다 일반적으로 더 빠름
    • 일반적으로 캐시 메모리에서 사용되는 RAM (상대적으로 소비전력이 높고 가격이 높고 집적도가 낮아 "대용량으로 설계할 필요는 없으나 빨라야 하는 장치"에 사용
  • DRAM vs SRAM

  • SDRAM (Synchronous RAM)
    • 특별한 (발전된 형태의) DRAM
    • 클럭 신호와 동기화된 DRAM
  • DDR SDRAM (Double Data Rate SDRAM)
    • 특별한 (발전된 형태의) SDRAM
    • 최근 가장 대중적으로 사용하는 RAM
    • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM

DDR3 SDRAM : 8개

DDR4 SDRAM : 16개

 

728x90
반응형
LIST
728x90
반응형
SMALL
  • 들어가며

"명령어가 어떻게 생겨야 명령어 파이프라이닝에 유리할까요?"

[연산 코드] [오퍼랜드]

  • 명령어 집합

"CPU는 명령어를 실행한다"

... 근데 이 세상의 모든 CPU가 똑같이 생긴 명령어를 실행할까?

명령어의 세세한 생김새, 연산, 주소 지정 방식 등은 CPU마다 다르다.

x86-64 CPU는 ARM CPU를 이해할 수 없다.

  • 명령어 집합 (구조): CPU의 언어인 셈

명령어가 달라지면 그에 대한 나비효과로 많은 것들이 달라진다

명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성...

  • 명령어 집합의 두 축: CISC & RISC
    • CISC(Complex Instruction Set Computer)

복잡한 명령어 집합을 활용하는 컴퓨터(CPU)

x86, x86-64는 CISC 기반 명령어 집합 구조

명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용

  • RISC(Reduced Instruction Set Computer)

메모리 접근 최소화(load, store), 레지스터 십분 활용

다만 명령어 종류가 CISC보다 적기에 더 많은 명령어로써 프로그램을 동작

  • 정리

 

728x90
반응형
LIST
728x90
반응형
SMALL

이를 방지하기 위한 분기 예측 (branch predictoin) 기능이 있다.

데이터 위험, 제어 위험 또는 구조적 위험이 발생 시 명령어 병렬 처리를 위한 파이프라이닝이 제대로 동작하지 않는다.

비순차적 명령어 처리를 통해, 순차적으로 명령어를 처리할 시 발생할 수 있는 오류를 방지할 수 있다.

예를 들어 3번이 맨 마지막에 처리됨으로 인해 M(100)과 M(101)의 값이 결정된 이후에 M(102)의 결괏값을 도출해낼 수 있다.

 

 

728x90
반응형
LIST

+ Recent posts