티스토리 뷰
프로그램이 실행되기 위해선, 심지어 변수 하나를 건드릴 때에도 메모리의 주소에 접근하여야 합니다.
컴퓨터 구조의 목적은 컴퓨터 시스템의 성능을 향상시키는 것인데, 메모리 접근 속도가 발목을 잡습니다.
주로 접근하는 메모리인 DRAM의 속도는 우리가 원하는 만큼 빠르지 않기 때문입니다.
때문에 컴퓨터 구조의 목적을 달성하기 위해 더 성능이 좋은 메모리를 탐구할 필요가 있습니다.
Memory Hierarchy
메모리는 크게 SRAM과 DRAM으로 나눌 수 있습니다.
메모리의 속도, 즉, 메모리 주소에 접근하여 값을 꺼내오는 시간은 SRAM이 DRAM보다 훨씬 빠릅니다
추가로 비교하자면 SSD 같은 기억장치는 DRAM보다 느린 수준입니다.
당연히 메모리는 빠를수록 용량 대비 가격이 비싸며, 이상적인 메모리는 SRAM의 속도와 SSD의 가격을 갖는 것입니다.
이상적인 메모리는 현실적으로 불가능하기 때문에 되도록 SRAM를 자주 굴리는 것으로 성능을 향상할 수 있습니다.
지역성의 원리 Principle of Locality
프로그램은 수많은 Instruction으로 구성되어 있지만 프로그램 Instruction의 모든 주소에 균등하게 접근하지 않고 그중에서 갔던 곳만 자주 접근하게 되는데 이를 지역성이라고 합니다.
make the common case fast. 지역성을 가진 주소를 SRAM에 저장시켜놓는다면 DRAM를 경유할 필요가 없습니다.
시간적 지역성 Temporal locality
최근 접속한 주소는 조만간 다시 접속될 가능성이 높습니다. for문의 i가 좋은 예시입니다.
공간적 지역성 Spatial locality
최근 접속한 주소의 주변은 조만간 접속될 가능성이 높습니다. 배열, 연결 리스트 등이 해당 예시입니다.
캐시 적중률 Hit Ratio
앞으로는 SRAM을 캐시, DRAM을 메모리로 부르겠습니다.
프로그램이 메모리의 주소에 접근한다면, 다음엔 그 주소나 그 주변 주소에 접근할 가능성이 높습니다.
메모리 주소와 그 주변 주소를 캐시에 저장시켜 놓는다면 컴퓨터 시스템의 성능을 향상할 수 있습니다.
동일한 주소에 100번 접근한다고 생각해보겠습니다.
메모리에 1번, 캐시에 99번 접근하니 총 걸린 시간은 메모리에 1번 접근하는데 걸린 시간과 다를 바 없습니다.
이와 같이 방문해야 할 주소가 캐시에 있어서 메모리가 아닌 캐시에 접근하는 것을 적중했다고 합니다.
Hit Ratio는 접근 횟수 대비 캐시 적중 횟수를 말합니다. 예시에서의 캐시 적중률은 99%입니다.
동일한 주소가 아니면 캐시에 원하는 주소가 없어서 다시 메모리에 접근해야 할 수도 있습니다.
하지만 통상적으로 캐시 적중률은 100%에 가까울 만큼 높기 때문에 마치 캐시의 용량이 많은 것처럼 시행할 수 있습니다.
이는 메모리의 계층구조와 지역성의 원리에 의해 얻을 수 있는 이점입니다.
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 파이프라인 해저드 (2) | 2021.04.18 |
---|---|
[컴퓨터구조] 파이프라인 (0) | 2020.11.21 |
[컴퓨터구조] MIPS 명령어 형식 (0) | 2020.10.14 |
[컴퓨터구조] MIPS 하드웨어 연산 (0) | 2020.09.23 |
[컴퓨터구조] ISA(Instruction Set Architecture) (0) | 2020.09.22 |
- Total
- Today
- Yesterday
- observeOn
- 네트워크 유량
- 최대 매칭
- 다익스트라 시간복잡도
- WWDC16
- WWDC17
- State Restoration
- 최단경로 알고리즘
- CPU와 Memory
- 벨만포드 시간복잡도
- mach-o
- 포드 풀커슨 알고리즘
- 벨만포드 알고리즘
- 에드몬드 카프 알고리즘
- 코딩대회
- IOS
- 컴퓨터 추상화
- Testable
- test coverage
- 최단경로문제
- 부스트캠프 6기
- 최단경로 문제
- 강한 순환 참조
- WWDC21
- 네트워크 플로우
- MeTal
- rxswift
- HIG
- WWDC19
- CompositionalLayout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |