한 걸음씩 기록하며
[메모리 계층과 성능, 코프로세서] 본문
- 과거에는 CPU와 메모리가 같은 속도로 작업을 했지만, 컴퓨터 하드웨어의 발전에 따라 CPU는 기하급수적으로 빨라졌지만, 메모리가 그 성능을 따라오지 못하는 비효율의 문제가 대두되었다.
- 이러한 문제를 해결하고자 컴퓨터 구조에서는 메모리의 계층을 분리하여 가장 빠른 메모리인 레지스터를 프로세스 데이터 패스 안에 넣고, 메모리에서 레지스터로 미리 데이터를 보내놓는 방식으로 속도 차이의 문제를 완화 시키는 방법을 사용한다.
메모리 계층(Memory Hierachy)
- 메모리의 성능에 차등이 있기 떄문에, 성능과 필요와 목적에 따라 여러가지 종류로 나누어 두는 것을 메모리 계층이라고 한다.
- 메모리 계층은 컴퓨터의 설계에 있어 각각의 특징이 있는 서로 다른 여러 종류의 저장 장치를 함께 사용하여 최적의 효율을 낸다
- 메모리 계층을 식료품 관련하여 비유한다면, 레지스터를 냉장고, 캐시를 집에 있는 식품 저장고, 메모리를 슈퍼마켓, 하드디스크를 대형 마트로 비유할 수 있다.
- 메모리별 간략한 정리
메모리 명칭 위치 접근 속도 | 위치 | 접근 속도 |
레지스터 | CPU 내부 | 빠름 |
캐시 | CPU 내부 | 빠름 |
메모리 | CPU 외부 | 레지스터와 캐시보다 느림 |
하드디스크 | CPU 직접 접근 불가 | 데이터를 메모리로 이동시켜 접근 가능 |
1) 레지스터 (register)
- CPU의 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 메모리를 뜻한다.
- CPU는 왜 메모리가 필요할까? : 데이터를 자체적으로 저장하지 못하기 때문이다.
- CPU는 컴퓨터에서 4대 주요 기능(기억, 해석, 연산, 제어)을 관할하는 장치이다.
- 그러나 CPU는 자체적으로 데이터를 저장할 방법이 없으므로, 메모리로 직접 데이터를 전송할 수 없다.
- 그러므로 CPU가 연산을 수행하기 위해서는 반드시 레지스터를 거쳐야한다.
→ 즉 레지스터는 CPU 내부에 위치한 고속 메모리로서(메모리 중에 가장 빠른), 바로 사용할 수 있는 데이터(소량의 데이터, 처리 중인 중간 결과 등)를 담고 있는 장치이다.
- 레지스터의 종류는 다양하다. 다음과 같이 나열할 수 있다.
종류 | 설명 |
프로그램 계수기(PC, Program Counter) | 다음에 실행할 명령어(instruction)의 주소를가지고 있는 레지스터 |
누산기(AC, ACcumulator) | 연산 결과 데이터를 일시적으로 저장하는 레지스터 |
명령어 레지스터(IR, Instruction Register) | 현재 수행 중인 명령어를 가지고 있는 레지스터 |
상태 레지스터(SR, Status Register) | 현재 CPU의 상태를 가지고 있는 레지스터 |
메모리 주소 레지스터(MAR, Memory Address Register) | 메모리로부터 읽어오거나 메모리에 쓰기 위한주소를 가지고 있는 레지스터 |
메모리 버퍼 레지스터(MBR, Memory Buffer Register) | 메모리로부터 읽어온 데이터 또는메모리에 써야할 데이터를 가지고 있는 레지스터 |
입출력 주소 레지스터(I/O AR, I/O Address Register) | 입출력 장치에 따른 입출력 모듈의 주소를가지고 있는 레지스터 |
입출력 버퍼 레지스터(I/O BR, I/O Buffer Register) | 입출력 모듈과 프로세서 간의 데이터 교환을 위해사용되는 레지스터 |
2) 캐쉬(cache)
- CPU 내부에 있는 메모리로써, 하위 메모리의 데이터나 값을 미리 복사해 놓는 메모리이다.
- 즉 속도가 빠른 장치(CPU,레지스터) 와 속도가 느린 장치(하위 메모리) 사이에서 비효율을 완화하는 메모리이다.
- 캐시가 위와 같은 일을 하는 것을 캐싱(caching)이라고 한다.
- 캐시는 CPU가 메모리에 접근하기 전 자신의 메모리에서 CPU가 원하는 데이터의 존재 여부를 확인한다.
- 이 때 필요한 데이터가 있는 경우를 적중, 없는 경우를 실패라고 한다.
- 적중하면 캐시는 메모리의 데이터를 레지스터에 복사하고, 실패하면 하위 메모리에서 데이터를 복사해서 레지스터에 전달한다.
- 만약 메모리 안에 적중과 실패가 있을 시에는 위의 행동을 동시에 수행한다.
- 캐시의 종류는 3종류가 있다.
종류 설명 CPU 성능에 직접적인 영향 L1 캐시 일반적으로 CPU 칩안에 내장되어 데이터 사용 및참조에 가장 먼저 사용되는 캐시 메모리 O L2 캐시 - L1 캐시 메모리와 용도와 역할이 비슷- 속도 : L1 캐시 > L2 캐시 > 일반메모리(RAM) O L3 캐시 - L1 캐시, L2 캐시와 동일한 원리로 작동- 대부분 CPU가 아닌 메인보드에 내장 X
3) 메인 메모리(Main Memory)
- 주기억장치로서, 컴퓨터에서 수치·명령·자료 등을 기억하는 컴퓨터 하드웨어 메모리 장치이다.
- 메인 메모리는 RAM과 ROM으로 구성되어있다.
- RAM(Random Access Memory) : 휘발성 기억 장치
- 컴퓨터가 빠른 액세스를 하기 위해 데이터를 단기간 저장하는 구성 요소
- 사용자가 요청하는 프로그램이나 문서를 스토리지 디스크에서 메모리로 로드하여 각각의 정보에 액세스
- 전원이 유지되는 동안 CPU의 연산 및 동작에 필요한 모든 내용이 저장
- 전원 종료시 기억된 내용 삭제
- Random Access : 어느 위치에서든 똑같은 속도로 접근하여 읽고 쓸 수 있다는 의미
- ROM(Read Only Memory) : 고정 기억 장치
- 컴퓨터에 지시사항을 영구히 저장하는 비휘발성 메모리
- 전원 종료시 기억된 내용 유지
- 변경 가능성이 희박한 기능 및 부품에 사용
- 소프트웨어 : 초기 부팅 관련 부분
- 하드웨어 : 프린터 작동에 관여하는 펌웨어 명령 등
4) 하드 디스크 드라이브(Hard Disk Drive, HDD)
- 비휘발성, 순차접근이 가능한 컴퓨터의 보조 기억 장치
- 메모리 구조에서 가장 느린 메모리이지만, 비휘발성 데이터 저장소 가운데 가격이 제일 저렴하여, 대중적으로 많이 사용된다. (성능이 뛰어난 SSD도 출시되고 있다. 물론 비싸다)
- 일반적인 데이터들을 저장할 때 주로 사용한다.
- 작동 원리
- 보호 케이스 내부의 플래터를 회전 → 플래터에 자기 패턴으로 정보 기록
- 플래터 표면의 코팅된 자성체에 데이터 기록
- 회전하는 플래터 위에 부상하는 입출력 헤드에 의해 자기적으로 데이터 기록 및 조회 가능
- 하드디스크 구성요소
구성 요소 | 설명 |
제어회로 | - 하드 디스크의 총괄적인 부분을 제어하는 회로- 제어회로 내부의 버퍼 메모리는 하드 디스크에 입출력될 데이터를 임시 저장함 |
스핀들 모터(Spindle Motor) | 플래터의 회전을 담당하는 부분 |
플래터(Platter) | - 데이터 기록 담당- 하나의 하드디스크에 한 개 이상 장착- 플래터 수 ↑ → 용량 저장 크기 ↑, 안정성 ↓ |
액추에이터(Actuator) | 제어회로의 명령에 따라 액추에이터 암 구동→ 헤드가 원하는 데이터 조회 가능 |
액추에이터 암(Actuator Arm) | 액추에이터를 통해 구동됨- 하나의 디스크에 여러 개 달려 있음- 암의 끝 부분에 입출력을 위한 헤드 달려 있음 |
헤드(Head) | - 데이터를 읽고 쓰는 헤드 |
코프로세서(Co-processor or Coprocessor)
- 코프로세서(Co-processor or Coprocessor)는 CPU의 기능을 보충하기 위해 사용되는 컴퓨터 프로세서로서, 보조프로세서 또는 보조 처리기라고도 부른다.
- 코프로세서는 메인 CPU 프로세서에 집중된 작업들의 짐을 덜어 시스템 수행 속도를 빠르게 해준다. 이러한 코프로세서의 기능으로는 부동소수점 산술, 그래픽, 신호 처리, 문자열 연산, 암호화, 주변장치 입출력 등이 있습니다. 한 코프로세서가 여러 기능을 수행할 수도 있고, 한 가지 기능만 수행할 수도 있습니다.
- 과거에는 한 칩 안에 모든 연산회로를 넣는 것이 어려웠기 때문에, 특정한 기능을 가진 코프로세서를 추가하여 단가를 낮추는 방식으로 많이 사용했다. (경제적인 이유도 있었다)
- 그러나 지금은 메인 프로세서의 발전과 동시에 가격이 대중적으로 내려옴에 따라, 전체가 통합된 CPU가 대중적으로 사용되고 있다.
'CS & SW & IT 용어' 카테고리의 다른 글
[MSA 살펴보기] (feat. Monolithic) (0) | 2022.04.24 |
---|---|
[Clean Architecture]란 무엇인가 (0) | 2022.02.27 |
[프로세스와 스레드]란 무엇인가 (0) | 2022.02.24 |
[동적 메모리 할당, 가비지 컬렉션, 이중 연결 리스트] (0) | 2022.02.18 |
[아날로그 처리 방법] (0) | 2022.02.11 |
Comments