- ROM(Read-Only Memory)
- Mask ROM: 공장에서 구워져 나옴.
- PROM(Programmable ROM): 한 번 구울 수 있다. 그러나 수정 불가.
- EPROM(Erasable PROM): 자외선을 비춰서 지울
수 있다. 재사용 가능.
- EEPROM(Electrically EPROM): 높은 전압을 주어
지울 수 있고, 다시 사용 가능.
- RAM(Random Access Memory)
- DRAM(Dynamic RAM): 데이터가 동적으로
변하므로 주기적으로 refresh를 한다. 싸고
집적도가 높아 대용량으로 이용
- SRAM(Static RAM): refresh가 필요없고 전력소모가
적고 비싸지만 R/W가 빠르다. 주로 cache로 이용
- SDRAM(Synchronous DRAM): CPU와 주파수 동기를
맞추어 시간 지연을 최소화. 메모리 검색 작업 원활.
- Flash Memory
- 읽기 속도가 빠르고 충격에 강하다.
- 블록단위로 Write/Erase
- EEPROM보다 경제적.
- 횟수제한 100만번(EEPROM은 10만번)
- 덮어쓸 수 없어서 반드시 erase 작업을 해주어야
한다.
- erase/write가 자유롭다.
- NOR
- Direct Access가 불가능하여 erase/write가 오래걸린다.
- read는 Direct Access를 하므로 빠르다.
- 부트코드 부팅이 가능
- 데이타 안정성이 높다.
- 병렬성
- NAND
- 페이지 단위로 Read/Write
- 블록 단위로 Erase
- NOR에 비해 write/erase가 빠르다.
- 순차적 접근
- 내구성이 강하다.
- NOR보다 단가가 싸, 보통 대용량 저장장치로 사용한다.
- 부트코드 부팅이 불가능하므로 RAM으로 옮겨
실행한다.
- 직렬성
2010년 1월 12일 화요일
메모리
2008년 4월 15일 화요일
입출력방법
입력: 입력장치 buffer에 있는 값을 memory에 써준다.
출력: memory의 값을 출력장치 buffer에 써준다.
입출력방법
- Polling
- busy waiting → process가 계속 검사
- flag가 1이되면 process가 가져다가 memory에 쓴다.
- 단점: 모든걸 process가 담당하므로 cpu가 아깝다.
- Interrupt
- process는 입출력 장치에게 일을 시켜놓고 다른일 한다.
- 입출력 장치는 시킨 일을 다 하면 process에게 interrupt를 보낸다.
- process는 하던일을 멈추고 memory의 데이타를 buffer에 혹은 buffer의 데이타를 memory에 옮겨준다.
- 장점: busy waiting을 하지 않는다. process는 data만 옮겨준다.
- 단점: interrupt handling을 위한 context switch overhead가 존재한다.
- DMA(Direct Memory Access)
- BUS에 DMAC를 달아두고 이것을 이용한다.
- process가 DMA에게는 입출력 장치와 Memory의 위치를 알려주고, 입출력 장치에게는 DMA로 동작할 것을 알려준다.
- 시킨 일을 다하면 입출력장치는 DMAC에게 일을 다했다고 한다.
- DMAC는 process가 시킨일이 끝날 때까지 계속 입출력 장치에게 일을 준다.
- DMAC는 BUS를 사용하겠다고 request를 보내고 BUS를 획득한 후 process가 지정해준 memory에 data를 쓴다.
- process가 시킨일을 다하면 DMAC는 process에게 interrupt를 보낸다.
RISC란 무엇인가.
RISC (Reduced Instruction Set Computer)
RISC의 등장배경
- CISC방식은 명령어도 많고 너무 복잡하여 성능이 저하될 우려가 있었다.
- 기존 CISC방식보다 좀 더 나은 성능을 보장하기 위하여 RISC가 등장하게 되었다.
RISC의 특징 및 장점
- 명령어를 줄이고 명령어 format을 동일하게 함으로써 명령어를 간단하게 하여 Decording속도를 높이고 pipelining을 가능하게 하였다.
- register를 늘림으로써 memory access를 줄여 성능을 높였다.
- memory access를 할 수 있는 명령어는 LDR과 STR 두 가지로 줄였다. 모든 operation은 register를 사용한다.
- register set을 여러개 둠으로써 함수 호출을 할 때 memory save를 하지않고 용도별로 register를 사용할 수 있다.
- Addressing mode(data를 가져오는 방식)이 간단하다.
- pipelining기법 적용이 쉽다.
- 하드웨어가 간단하여 발열이 적고 싸다.
RISC의 단점
- 응용분야가 많아지면서 instruction이 점점 늘어나기 때문에 한계가 있다.
CPU 성능분석
CPU 성능(performance)은 임의의 application의 수행시간에 반비례한다.
cpu excution time은 곧 명령어의 개수를 의미하며, 이는 순수하게 임의의 application이 cpu를 사용한 시간을 뜻한다.
CPU time을 결정하는 세 개의 요소로는 instruction의 개수, CPI, Period가 있으며 다음과 같이 계산한다.
CPU time = 초/program = instructions/program * clocks/instruction * seconds/clock
= # of instruction * CPI * Clock rate(Period)
- instruction의 개수: 프로그램의 크기와는 관계가 없으며 순수하게 수행되는 명령어의 개수이다.
- CPI: 명령어마다 다르므로 대개는 average로 한다.
- Clock rate: cycle하나당 걸리는 시간
성능을 좋게 하기 위해서는 CPU time을 줄여야 하는데, 이는 곧 위의 식에서 보는 바와 같이 # of instruction이나 CPI, Clock rate를 줄이면 된다. 이러한 요인들로 하여금 CPU time을 줄이는 방법은 다음과 같다.
- 동작 clock을 빠르게 한다. (Clock rate를 줄인다)
- 성능 좋은 컴파일러를 사용하거나 좋은 알고리즘을 이용하여 프로그래밍한다. (# of instruction을 줄인다)
- pipelining등의 기법을 사용한다.(CPI를 줄인다)
또한, CPU 성능을 높이기 위한 것으로 다음과 같은 기법들을 사용할 수 있다.
- Pilelining
- 한국어로 하면 '분업'을 뜻한다.
- 5단계 pilelining은 Instruction Fetch - Decode - Operand Fetch - Excute - Write Back 의 단계로 이루어진다.
- 각 단계에 필요한 resource가 따로있다.
- resource를 효율적으로 사용하기 위한 방법으로 놀고있는 resource를 방지한다.
- 모두 clock에 동기화 되어 있어서 clock이 튈 때마다 다음 단계로 옮겨진다.
- Super scalar
- 명령어 처리하는 모듈이 여러 개 있는 것으로, 모듈이 2개일 경우 2-way super scalar라고 한다.
- dependency가 없는 여러 개의 명령어를 동시해 수행할 수 있게 한다. (2-way일 경우 2개 동시에 수행 가능)
- dependency가 없는 명령어 set은 하드웨어가 찾아낸다.
- 3-way, 4-way, 5-way 등등으로 사용할 수 있다.
- pilelining과 함께 사용하면 더더욱 성능이 증가된다.
- VLIM(Very Long Instruction Word)
- dependency가 없는 명령어를 하나의 명령어로 만들어 parellel하게 실행될 수 있는 것 끼리 묶는다.
- super scalar와 비슷하게 보이지만 dependency가 없는 명령어 set을 compiler가 찾아내므로 소프트웨어적으로 체크한다는 점이 다르다.
CPU 성능을 측정하는 방법으로 두 가지 기준이 있다. 그 하나가 Response Time이고 나머지 하나가 Throughput이다.
- Response Time: 프로그램 하나가 시작하면서부터 끝날 때까지의 시간
- Througput: 단위시간 당 처리하는 일의 양
예를 들어서, CPU를 두 개로 늘린다면 Response Time에는 변화가 없으나 Througput은 증가할 것이다.
피드 구독하기:
글 (Atom)