본문 바로가기

Computer Architecture46

캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2 초안 :  2023.04.10 2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리2023.04.11 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1   이전 게시글에서 다룬 direct mapping 방식의 캐시 메모리를 생각해보면..메인 메모리의 어떤 데이터 블록은 캐시메모리의 지정된 슬롯으로 들어가야만 하고, 해당 슬롯에 이미 정보가 있다면 그 내용은 지워져야 한다. 캐시에 여유 공간이 있더라도 말이다.이는 결과적으로 hit ratio 를 낮게 만드는 요인이 된다. Set Associative Mapping이를 해결하기위해 direct mapping 캐시 메모리 두개를 병.. 2023. 4. 12.
캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1 초안 :  2023.04.10 2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리  캐시메모리에는 메인메모리의 일부 내용이 복사되어 저장된다.프로세서가 어떤 주소에 접근하려고 하면, 먼저 그 주소에 해당하는 내용이 캐시에 있는지 확인하고 있다면 캐시메모리에서 바로 읽고, 없다면 메인메모리에서 읽고 캐시로 복사해온다.이때 해당 주소 뿐만 아니라 인접 주소 내용도 함께 블록 크기로 복사한다. 즉 캐시메모리에 저장되는 정보는 두개이다.1. 메인 메모리에서 복사한 데이터 블록2. 이 데이터 블록이 메인 메모리의 몇번지에 있던 내용인지 나타내는 Tag 정보 아래 그림은 4x16 형식의 캐시 메모리 구조 예시이다. 4개의 데이터 블록이 있으며, 각 블록.. 2023. 4. 11.
캐시 메모리(Cache Memory)의 원리 초안 :  2023.04.10 CPU 는 프로그램을 실행하기 위해 메모리에서 명령어 및 데이터를 불러온다.문제는 이 과정이 칩 외부의 시스템버스를 통해서 이뤄지므로 딜레이가 상당하다는 것이다. 다음에 쓰일 명령어나 변수를 예측에서 코어 내부의 SRAM 기반 메모리에 박아둔다면 이와 같은 딜레이를 드라마틱하게 줄일 수 있을 것이다.이를 위한 메모리가 바로 캐시메모리(Cache Memory) 이다.  CPU 내부에는 여러개의 캐시메모리가 존재하는데, 여기서도 코어와 가까운 순서대로 계층 (hierarchy)을 구성한다.코어와 가장 가까운 캐시메모리를 L1 (level 1) 캐시, 그 다음을 L2 캐시, 그 다음을 L3 캐시라고 한다. 보통 L1, L2 캐시는 각 코어 내부에 있고 L3 은 코어 외부에 위치하.. 2023. 4. 10.
Logical Address 와 Physical Address 초안 :  2023.04.07 프로그램이 메모리에 올라가면 CPU는 프로그램이 올라간 특정 주소를 W/R 하며 실행을 한다.그런데 만약 프로그램 여러개를 실행중이라면 메모리에도 여러개의 프로그램이 올라가있을텐데,CPU는 각각의 프로그램 주소가 어디서 부터 시작하고 어디서 끝나는지 알아야 하는 것일까?  이를 이해하기 위해 메모리의 주소에는 Logical Address, Physical Address 두가지가 있다는 것을 알아야 한다.logical address 는 실행중인 프로그램 각각에게 부여된 0번지 부터 시작하는 주소를 의미하고, physical address는 정보가 저장된 메모리 하드웨어 자체의 주소이다.메모리에 저장되는 정보는 계속 바뀐다. 실행이 끝나면 삭제되고, 새로운 프로그램이 실행되면 .. 2023. 4. 9.
CISC 와 RISC 초안 :  2023.04.06 CPU 가 이해할 수 있는 명령어들의 모음을 ISA (Instruction Set Architecture) 라고 한다.그러니까 우리가 윈도우 데스크탑으로 주로 쓰는 x86-64 의 ISA 와 맥북의 ARM 아키텍처의 ISA 는 서로 다르다.ISA 가 다르므로, 똑같은 C코드를 컴파일해도 어셈블리 코드는 달라진다. ISA 가 다르다는 것은 CPU 에 사용되는 레지스터 종류와 갯수, 메모리 관리 방법등도 다르므로, 하드웨어 설계 자체가 다르다는 것을 의미한다.그러므로 각각의 CPU는 서로 다른 ISA 를 이해할 수 없다. (디코딩 할 수 없다.) 이전 게시글에서 파이프라인, 슈퍼스칼라, OoOE 등을 살펴보았는데 이들을 적용하기 좋은 ISA 도 있고 적용하기 힘든 ISA 도 있.. 2023. 4. 8.
CPU 성능을 올리기 위한 설계 방법 초안 :  2023.04.06  CPU설계를 할때 클럭을 높이고, 코어를 왕창 때려넣고, 레지스터를 왕창 박아서 멀티스레드 기능을 넣으면 빠른 성능의 CPU를 만들 수 있다. 그런데 이보다 중요한 것은 CPU가 놀지 않도록 하는 것이다. 명령어를 동시에 처리하여 CPU 가 쉬지 않고 동작하게 하는 기법을 ILP (Instruction-Level Parallelism, 명령어 병렬처리 기법) 이라고 한다.이번게시글에서는 대표적인 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리에 대해 다룬다. 파이프라이닝 (Pipelining)이전에 명령어의 실행 cycle 을 Fetch ↔ Execution 으로 나눴는데, 클럭 단위로 살펴보면 아래와 같다.1. Instruction Fetch (명령어 인출)2. Inst.. 2023. 4. 7.
스레드(thread)와 멀티 스레드 CPU 초안 :  2023.04.05 CPU (하드웨어) 에서 사용되는 스레드와 프로그래밍에서 사용되는 스레드는 의미가 다르다.인터럽트의 주체가 어디냐에 따라 exception(예외)  과 hardware interrupt 로 분리되듯, 스레드도하드웨어적 스레드, 소프트웨어적 스레드로 나뉜다. 하드웨어적 스레드하나의 코어가 동시에 처리하는 명령어 단위. (= 명령어를 실행하는 단위)그러니까 지금까지 우리가 게시글에서 다룬 CPU 들은 1코어 1스레드 CPU 인 셈이다.만약 여러 스레드를 지원하는 CPU 는 하나의 코어로도 여러 개의 명령어를 동시에 실행할 수 있다.이렇게 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 CPU 라고 한다.하이퍼 스레딩 (Hyper threading) 은 인텔의 멀.. 2023. 4. 6.
인터럽트(Interrupt) 초안 :  2023.04.04 CPU 가 하나의 명령어를 처리하는 데에는 정해진 흐름이 있고, 이를 반복하며 명령어들을 처리해 나간다.이러한 정형화된 흐름을 command cycle 이라고 한다. 이전 게시글에서 간단한 그림으로 CPU 가 메모리에서 명령어를 인출하고 실행하는 과정을 살펴봤다.다시 정리해보면1. 메모리에 있는 명령어를 CPU 로 가져오고 (Fetch)2. 이를 디코딩 하여 명령어를 실행한다. 즉, 컨트롤러가 IR 에 담긴 명령어를 디코딩 하여 control signal 을 발생 시킨다. (Execution)그런데 만약 명령어를 실행하는데, indirect addressing mode 로 되어있어 메모리 접근이 한번 더 필요한 경우에는 바로 execution cycle 에 돌입할 수 없다... 2023. 4. 5.
프로세서 내부의 레지스터 초안 :  2023.04.04 프로그램 속 명령어와 데이터는 실행 전후로 CPU 내에 위치한 레지스터에 저장된다.CPU 속 레지스터들의 이름은 제조사 마다 다른데, 공통적으로 다루는 레지스터들은 대동소이하다. 1. 프로그램 카운터 (PC, Program Counter)메모리에서 읽어 들일 명령어의 주소를 저장한다. 이를 Program Pointer 라고 부르는 CPU 도 있다. 2. 명령어 레지스터 (IR, Instrction Register)PC 값으로 부터 명령어가 담긴 특정 메모리의 주소를 CPU 가 읽어올텐데, 해당 명령어를 저장하는 레지스터이다.이후 CPU 내의 컨트롤러가 해당 명령어를 디코딩 하여, control signal 들을 내보낸다. 3. 메모리 주소 레지스터 (MAR, Memory A.. 2023. 4. 4.