Memory in Computer Architecture week 9
기억장치와 모듈설계, 컴퓨터구조 9주차

Goals:
기억장치를 분류하고, 그 특징을 설명할 수 있다. (Classify memory storage and describe their characteristics)
계층적 기억장치를 설명할 수 있다. (Explain hierarchical memory storage)
반도체 기억장치를 설명할 수 있다. (Describe semiconductor memory)
Contents:
기억장치의 분류와 특성(Classification and Characteristics of Memory)
계층적 기억장치시스템(Hierarchical Memory Systems)
💡컴퓨터의 구성요소: 중앙 처리 장치(CPU), 메모리(Memory), 입출력 장치(I/O device)
💡 기억장치의 분류와 특성
(Classification and Characteristics of Memory)

📍기억장치 액세스(memory access)
CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작을 뜻한다. 우리가 컴퓨터에서 보는 모든것은 데이터다. 컴퓨터에서 하는 모든것이 데이터를 읽고 쓰고 처리하고 가공하는 것이다. 데이터를 읽는 방법 4가지를 알아보자
📍액세스 속도와 관련된 파라미터들
(Parameters related to access speed)
파라미터(Parameters) 메모리 시스템의 성능 특성을 설명하고, 시스템이 데이터를 효율적으로 처리할 수 있는 능력을 나타낸다.
액세스 시간(access time): 주소와 쓰기/읽기 신호가 도착한 순간부터 데이터 액세스가 완료되는 순간까지의 시간이다. 일반적으로 나노초(nanoseconds) 단위로 측정된다.
데이터 전송률(Throughput): 기억장치로부터 초당 액세스 되는 비트 수

메모리 주기 시간 (Memory Cycle Time): 연속적인 메모리 액세스 사이의 시간 간격으로, 한 번의 메모리 액세스를 완료하고 다음을 준비하는 시간을 포함한다.
지연시간 (Latency): 데이터 요청이 시작되고 실제 데이터 전송이 시작되는 사이의 딜레이 또는 시간 지연을 의미한다.
📍기억장치 액세스의 유형(Type of memory access)
순차적 액세스(sequential access)
저장된 정보를 처음부터 순서대로 액세스하는 방식 (예: 음악들을 때 쓰던 테이프) 데이터가 일렬로 저장되기 떄문에 데이터를 읽을때도 처음부터 차례대로 읽어야 한다.

직접 액세스(direct access)
- 직접 액세스는 순차 액세스를 발전시킨 방법이다. 액세스할 위치 근처로 직접 이동한 다음에, 순차적 검색을 통하여 최종 위치에 도달하는 방식이다. 아래의 사진처럼 둥글게 생긴것은 대부분 직접 액세스 방법을 사용한다. 액세스 시간은 이전 액세스의 위치와 지금 액세스 하는 위치에 따라서 바뀐다. 위치가 서로 멀면 느려진다. (예: 디스크, CD-ROM)

임의 액세스(random access)
- 직접 액세스와의 차이는 임의의 위치로 가서 순차 액세스 과정을 수행하지 않는다는 점이다. 각 위치마다 고유의 주소를 할당한다. 주소(의미값을 가짐)에 의해 직접 기억 장소를 찾아 액세스 하며, 어떤 기억 장소든 액세스하는 시간이 동일하다. (예: 반도체 기억장치) 메모리의 어느 주소나 액세스 시간이 같듯이 임의 액세스 방식은 액세스 시간이 일정하다.

연관 액세스(associative access)
- 임의 액세스보다 빠른 방식이다. 저장된 내용의 특정 비트들을 비교하여, 일치하는 내용을 액세스하는 방법이다. 캐시가 대표적인 예시이다. 임의 액세스와 마찬가지로 이전 데이터의 위치가 지금 엑세스 하는 시간에 영향을 주지 않는다. 예: 연관 기억장치(associative memory)

📍 기억장치의 특성(Characteristics of memory)
기억장치의 설계, 전송단위, 주소지정 단위의 특성을 잘 이해하고 적절히 고려해야 시스템의 성능과 효율성을 향상시킬 수 있다. 또한 용량(capacity)와 엑세스 속도또한 기억장치 시스템을 설계할 때 고려해야할 중요한 사항이다. 왜냐하면 용량을 늘리더라도 컴퓨터가 그에 맞게 설계되지 않았다면 엑세스 속도가 느려질 수 있기 때문이다.
기억장치의 설계 (Memory Architecture)
기억장치의 제조 재료에 따른 유형(Types Based on Manufacturing Materials)
반도체 기억장치(semiconductor memory): 반도체 물질인 실리콘(Si)칩을 이용한 기억장치이다. 예) RAM, ROM, Flash memory

자기-표면기억장치(magnetic-surface memory): 자화 물질(자석)로 코팅된 표면에 정보를 저장하는 기억장치 예)디스크

데이터를 저장하는 성질에 따른 유형(Types Based on Data Storage Properties)

휘발성 기억장치(Volatile memory): 전원 공급이 중단되면 내용이 지워지는 기억장치 예)RAM
비휘발성 기억장치(Nonvolatile memory): 전원 공급에 관계없는 영구 저장장

삭제불가능 기억장치(Non-erasable memory): 내용 변경이 불가능한 기억장치 ROM is non-volatile memory that permanently stores instructions for your computer.
전송단위 (Unit of transfer)
CPU가 한 번의 기억장치 액세스에 의해 읽거나 쓸 수 있는 비트 수를 말한다. 예를 들어, 64비트 전송 단위는 한 번에 64비트의 데이터를 전송할 수 있다는 것을 의미한다.
- 주기억장치에서는 단어(word)단위이고 보조기억장치는 블록(512 바이트 혹은 1k 바이트) 단위이다.
주소지정 단위 (Addressing Unit)
- 주소지정 단위는 메모리의 크기에 직접적인 영향을 미친다.
메모리에 저장된 데이터를 찾거나 접근하기 위해 사용되는 주소의 단위를 의미한다. 메모리는 주소를 통해 각각의 위치에 데이터를 저장하고 접근하게 된다.
바이트 단위 혹은 단어 단위로 구성된다.
주소 비트의 수 A와 주소지정 단위의 수 N과의 관계 : 2^A = N
예를 들어, 32비트 주소지정 단위는 2^32(약 4GB)의 주소 공간을 가지며, 각 주소는 메모리 내의 특정 위치를 가리킨다.
💡계층적 기억장치시스템
(Hierarchical Memory Systems)
지역성의 원리(principle of locality) 메모리가 계층적으로 설계된 이유 중 하나는 지역성의 원리 때문이다. 메모리 계층 구조를 설계하고 최적화하는 데 중요한 역할을 하기 때문이다. 프로그램이 처리되는 과정에서 메모리 액세스들이 특정 영역에 집중되는 현상이다. 여러 계층으로 구성된 메모리 시스템에서는 빠른 액세스 속도를 가진 캐시 메모리와 같은 상위 계층의 메모리를 사용하여 자주 액세스되는 데이터에 빠르게 접근할 수 있다. 동시에 더 큰 용량을 가진 하위 계층의 메모리를 사용하여 드물게 액세스되는 데이터를 보관한다. 이렇게 함으로써 메모리 시스템은 자주 액세스되는 데이터를 더 빠르게 처리하고, 드물게 액세스되는 데이터에는 더 낮은 비용을 지불하면서도 전체적인 성능을 향상시킬 수 있다.
아래 사진에서 보듯이 데이터가 첫 번째 계층의 기억장치(ML1)에 있는 비율이 높을수록 전체 평균 액세스 시간이 감소한다. 그 이유는 빈번하게 액세스되는 데이터가 더 빠른 기억장치에 저장되기 때문이다.

비율 20% 평균 액세스시간 82ns: 비율이 매우 낮을 때, 평균 액세스 시간이 가장 높다. 해당 데이터에 액세스하기 위해 ML1 에서 더 느린 메모리로 이동해야 하기 때문이다.
비율 100% 평균 액세스시간 10ns: 모든 데이터가 첫 번째 계층의 기억장치인 ML1에 있으므로 평균 액세스 시간이 가장 낮은 10ns로 나타난다. 모든 데이터가 가장 빠른 메모리에 저장되어 빠른 액세스가 가능하기 때문이다.



위의 사진에서 보듯이 상위계층으로 갈수록 비트당 가격이 높아지고, 용량은 감소하며, 액세스 시간이 짧아지고, CPU에 의한 액세스 빈도는 상승한다. 하위계층으로 갈수록용량이 더 커지고, 비트당 가격은 떨어지며, 지역성의 원리로 인하여 액세스 빈도는 더 낮아진다.

📍 내부기억장치(internal memory)
CPU가 직접 액세스할 수 있는 기억 장치들을 뜻한다. 예) CPU register, Cache ,주기억장치(Primary Memory)
주기억장치(Primary Memory): 컴퓨터 시스템에서 프로그램 실행 및 데이터 처리에 직접적으로 사용되는 메모리를 가리킨다. 이는 CPU가 직접 액세스할 수 있는 메모리로, 데이터를 저장하고 CPU가 필요할 때 읽거나 쓸 수 있다. 예) RAM, ROM, 캐시메모리, 가상메모리로 이루어져있다.
RAM (Random Access Memory)
CPU가 직접 액세스할 수 있는 메인 메모리(임의 엑세스 방식)이다. RAM은 읽기와 쓰기가 가능하며, 반도체 직접회로 기억장치(semiconductor IC memory)이다. 휘발성(volatile) 메모리이므로 전원이 꺼지면 데이터가 손실된다. 제조 기술에 따라 DRAM, SRAM으로 구분된다.
- 1) DRAM (Dynamic RAM): 각 셀이 하나의 캐패시터와 트랜지스터로 구성되어 있다. 트랜지스터는 캐패시터에 저장된 데이터를 읽거나 쓰는 작업을 담당한다. 데이터는 캐패시터에 저장되는데, 트랜지스터는 각 셀의 캐패시터에 저장된 데이터를 주기적으로 갱신하여 캐패시터에 저장된 데이터의 손실을 방지하는 역할을 한다.
집적 밀도가 높다.
데이터의 저장 상태를 유지하기 위하여 주기적인 재충전(refresh) 필요하다.
같은 용량의 SRAM 보다 비트당 가격이 더 저렴하다.
용량이 큰 주기억장치로 사용한다.
"직접 밀도가 높다"는 뜻: DRAM이 단위 면적당에 저장할 수 있는 비트 수가 많다는 것을 의미한다. 즉, 단일 칩 내에서 더 많은 데이터를 저장할 수 있는 능력을 가지고 있다는 것을 의미한다.
2) SRAM (Static RAM): 플립-플롭 논리 회로를 사용하여 데이터를 저장하고 읽는 데 사용된다.
집적 밀도가 낮다.
전력이 공급되는 동안에는 재충전 없이도 데이터 계속 유지 가능하다.
제조 비용이 높아 대용량 메모리로는 비효율적이다.
DRAM보다 다소 더 빠르다
높은 속도가 필요한 캐시 메모리로 사용한다.
"플립-플롭(flip-flop)" 논리 회로 뜻: 두 개의 안정 상태 (0 또는 1)를 가지고 있으며, 입력 신호에 따라 상태를 변경할 수 있다. 플립-플롭은 일종의 이진 기억장치로 사용되며, 입력 신호를 받아 상태를 변경하고 그 상태를 유지하는데 SRAM은 이러한 플립-플롭 셀의 배열로 구성되어 있으며, 이러한 셀은 고속의 데이터 액세스와 저전력 소비를 제공하여 많은 용도에 적합하다.
📍 ROM (Read-Only Memory)

영구 저장이 가능한 반도체 기억장치이다.
읽는 것만 가능하고, 쓰는 것은 불가능하다.
아래 내용들의 저장에 사용된다.
1) 시스템 초기화 및 진단 프로그램
2) 빈번히 사용되는 함수들을 위한 서브루틴들
3) 제어 유니트의 마이크로프로그램
롬의 종류는 3가지가 있다.
1) PROM (Programmable ROM): 사용자가 한 번은 쓰는 것이 가능한 ROM
2) EPROM (Erasable Programmable ROM): 자외선을 이용하여 내용을 지우는 것이 가능한 PROM. 여러 번 쓰기가 가능
3) EEPROM (Electrically Erasable PROM): 전기적으로 지울 수 있는 EPROM. 데이터 갱신 횟수 제한(수만 번 정도)
- EEPROM으로 갈수록 기술이 발전하고 EEPROM의 종류인 플래시 메모리(Flash memory)는 EEPROM보다 더 빠르고 더 저렴하며, 직접 밀도가 높고 대용량 저장 공간을 제공한다. 하드 디스크를 대체하는 SSD의 구성요소로써 널리 쓰이고 있다.
📍 캐시메모리(Cache memory)
- CPU와 주기억장치(RAM) 사이에 위치하여 CPU가 빈번하게 액세스하는 데이터를 빠르게 제공한다. 이 캐시 메모리는 주 메모리의 일부로 간주되며, CPU가 직접 액세스할 수 있는 주 기억장치의 한 부분이다.
📍 외부기억장치(external memory)
CPU가 직접 액세스할 수 없고, 장치 제어기(device controller)를 통해서만 액세스할 수 있는 기억장치들을 뜻한다. 장치 제어기 예) Disk, SSD, CD-ROM


