Lecture 11: The Memory Hierarchy
Storage Technologies and Trends Random-Access Memory RAM(Random-Access Memory)은 칩 형태로 패키징되어, 여러 개의 칩이 하나의 메모리를 구성한다. RAM이 데이터를 저장하는 기본 단위는 셀(Cell)이며, 각 셀은 1비트를 저장한다. RAM은 셀의 구조에 따라 S...
Storage Technologies and Trends Random-Access Memory RAM(Random-Access Memory)은 칩 형태로 패키징되어, 여러 개의 칩이 하나의 메모리를 구성한다. RAM이 데이터를 저장하는 기본 단위는 셀(Cell)이며, 각 셀은 1비트를 저장한다. RAM은 셀의 구조에 따라 S...
Generally Useful Optimizations Code Motion 루프 내에서 동일한 계산이 반복적으로 수행되는 경우, 해당 계산을 루프 외부로 이동하여 한 번만 수행되도록 최적화한다. void set_row(double *matrix, double *vector, long r, long width) { for (long c...
Memory Layout x86-64 Linux Memory Layout x86-64는 이론상 64비트까지의 주소를 가질 수 있지만, 실제로는 47비트만을 사용하므로 128TB의 메모리 공간을 나타낼 수 있다. (최대 0x7FFFFFFFFFFF) Segment Stack ...
Arrays Array Allocation 자료형이 T인 요소 L개로 이루어진 배열 A가 있다면, 해당 요소들의 전체 크기 L * sizeof(T) 바이트가 연속된 구간으로 메모리에 할당된다. Array Access 배열의 이름 A를 배열의 첫 번째 요소를 가리키는 포인터처럼 사용할 수 있다. 단, A의 값을 변경하는 것은 불가능하다. i...
Procedures 여기서는 함수, 메서드 등을 프로시저(Procedure)라고 통칭하겠다. 프로시저 호출은 제어 전달, 데이터 전달, 지역 데이터 관리와 같이 3단계로 세분화할 수 있다. 각 단계는 필요한 경우에만 수행되어, 프로시저 호출의 오버헤드를 최소화한다. Stack Structure 스택은 메모리의 한 영역으로, 호출된 프로...
Condition Codes 특정한 작업 결과에 따라 부차적으로 설정되는 플래그를 조건 코드(Condition code)라 한다. Flag Name CF Carry Flag (for unsigned) ZF Zero Fl...
x86 Architecture x86 아키텍처는 인텔이 개발한 명령어 집합 구조(Instruction Set Architecture, ISA)이다. 대표적인 CISC(Complex Instruction Set Computer) 아키텍처로, 수많은 기능과 복잡한 구조를 가진다. Intel x86 Evolution: Milestones ...
Fractional Binary Numbers 앞서 $w$ 비트 정수 $x$를 각 비트 $x_i$의 합으로 나타냈었다. [x = \sum_{i=0}^{w-1} {x_i 2^i}] 여기서 $i$를 음수 범위로 확장하면 실수에 대한 표현과 같다. [x = \sum_{i=-d}^{n-1} {x_i 2^i}] 이때 $x$는 정수부 $n$ 비트, ...
Addition 두 정수 $u$, $v$를 더한 값 $s_{ideal}$이 $w$ 비트로 표현 가능한 범위를 벗어나는 경우, $w$ 비트로 정수를 표현하는 컴퓨터에서는 $s_{ideal}$의 하위 $w$ 비트만을 취한 값 $s$가 나타나며, 이러한 현상을 오버플로(Overflow)라 한다. Unsigned Addition $s_{ideal} ...
Everything is bits 디지털 세상은 이진 값을 기반으로 한다. 연속적인 값(아날로그)보다 비트 단위의 값(디지털)을 저장하는 것이 훨씬 용이하기 때문이다. Example Data Representations C Data Type Typical 32-bit Typical 64-bit ...