티스토리 뷰

1.4 Processors Read and Interpret Instructions Strored in Memory

1.4.1 Hardware Organization Of a System

Intel 시스템 하드웨어 구조

hello 프로그램을 실행시킬 때 어떤 일이 벌어지는 지 알려면 시스템의 하드웨어 구조를 이해해야 한다.

 

Buses

시스템 전체를 실행하는 것은 버스(Bus)라고 불리는 일종의 도관의 모음이다.

버스는 각 구성 요소 간의 바이트를 전달시키면 워드(word)라고 불리는 고정된 사이즈의 바이트 모음을 전달시킨다.

word에 바이트 수는 근본적인 시스템 매개변수이다.

오늘날 대부분 기계들은 4바이트(32비트) or 8바이트(64비트)로 이루어져있다.

 

I/O Devices

I/O(입출력) 장치는 외부 세계와 연결하는 시스템

ex) 키보드, 마우스, 화면, 디스크 드라이브 등등

각각의 I/O 장치는 컨트롤러 혹은 어댑터를 통해 I/O 버스로 연결한다.

 

Main Memory

메인 메모리는 프로그램과 데이터를 가지고 있는 임시 저장소

메인 메모리는 DRAM 칩의 모음으로 구성되어 있다.

메모리는 선형 배열로 이루어져있으며 0으로 시작하는 유일한 주소를 가지고 있다.

 

Processor

CPU 혹은 프로세서는 메인 메모리에 있는 명령어를 실행하거나 해석하는 엔진이다.

CPU 코어는 PC(program counter)라고 불리는 word 크기의 저장 장치 또는 레지스터가 있다.

PC는 메인 메모리에 있는 기계어 명령어를 가리킨다.

프로세서는 PC가 가리키는 명령어를 반복적으로 실행하고 PC를 다음 명령을 가리키게끔 업데이트한다.

프로세서는 명령어 집합 구조(instruction set architecture)에 의해 정의된 매우 단순한 명령어 실행 모델에 따라 작동한다.

프로세서는 PC가 가리키는 메모리에 명령어를 읽고, 명령어의 비트를 해석하고, 명령어에 의해 간단한 작업을 수행하고 그 후에는 PC를 다음 명령어로 가리킨다.

 

이러한 간단한 작업은 메인 메모리, 레지스터 파일, 그리고 산술/논리 장치(ALU) 주변으로 반복된다.

레지스터 파일은 word 크기의 레지스터들을 구성되어 있는 작은 저장 장치이다.

ALU는 새로운 데이터와 주소 값을 계산한다.

 

- Load

메인 메모리의 바이트 또는 word를 레지스터로 복사하여, 레지스터 이전 내용을 덮어쓴다.

 

- Store

레지스터의 바이트 또는 단어를 메인 메모리의 위치로 복사하여 해당 위치의 내용을 덮어쓴다.

 

- Operate

두 레지스터의 내용을 ALU로 복사하여 두 words에 대한 산술 작업을 수행하고, 레지스터에 결과를 저장하고 해당 레지스터의

이전 내용을 덮어쓴다.

 

- Jump

명령어 자체로 부터word를 추출하고 PC로 복사하고 PC의 이전 값을 덮어쓴다.

 

1.4.2 Running the hello Program

 

hello 프로그램 실행과정

쉘(shell) 프로그램에서 ./hello 타이핑 한 후에 쉘 프로그램은 각각을 레지스터로 읽어들여서 메모리에 저장한다. 

./hello + enter를 한 후에 쉘은 hello 오브젝트 파일에 있는 코드와 데이터를 디스크에서 메인 메모리로 복사한

명령어들을 실행하여 실행 가능한 hello 파일을 가지고 온다(load).

마지막에, 'hello, world\n' 문자열을 포함한 데이터가 출력된다.

 

1.5 Caches Matter

시스템은 한 곳에서 다른 곳으로 정보를 옮기는 데 많은 시간을 소비한다.

hello 프로그램에 있는 기계 명령어는 원래 디스크에 저장된다.

프로그램이 로드되면, 메인 메모리로 복사된다.

프로세서가 프로그램을 실행하면, 명령어들은 메인 메모리에서 프로세서로 복사된다.

시스템 설계자는 이러한 복사하는 작업들을 빠르게 실행해야 하게 만들어야 한다.

 

큰 저장 장치는 작은 저장 장치보다 느리고, 빠른 저장 장치는 느린 저장 장치보다 비싸다.

프로세서는 메인 메모리보다 데이터를 거의 100배 빠르게 읽는다.

반도체 기술이 빠르게 발전하면서, 프로세서-메모리 갭(processor-memory gap)이 점점 증가한다.

 

캐시 메모리

시스템 설계자들은 이러한 프로세서-메모리 갭을 해결하기 위해 작고 빠른 캐시 메모리(cache memories)를 만든다.

캐시 메모리는 프로세서가 가까운 미래에 필요한 정보에 대한 임시 영역이다.

 

L1 캐시와 L2 캐시 SRAM 반도체로 구현된다.

캐싱에 대한 기본 개념은 프로그램이 지역화된 지역의 데이터와 코드에 액세스하려는 지역성(locality)을 활용하여

시스템이 매우 큰 메모리와 매우 빠는 메모리의 효과를 얻는 것이다.

 

캐시에 대해 아는 애플리케이션 프로그래머는 캐시를 활용하여 프로그램의 성능을 향상시킬 수 있다.

 

1.6 Storage Devices Form a Hierarchy

메모리 계층

모든 컴퓨터 시스템의 저장 장치들은 메모리 계층 구조로 되어 있다.

위에서 아래로 내려갈 수록, 장치들은 커지고, 느려지고, 바이트당 가격이 싸진다.

레지스터는 계층 구조에서 가장 위에 있다. (L0 or level 0)

 

메모리 계층 구조의 주요 개념은 한 계층에 저장 장치가 다음 낮은 레벨에 대한 저장 장치의 캐시 역할을 한다.

분산 파일 시스템으로 되어있는 시스템에서는, 로컬 디스크가 다른 시스템의 로컬 디스크에 저장되어 있는 데이터에

대한 캐시 역할을 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
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 31
글 보관함