Skip to main content
2025-08-08

2. Architecture

TL;DR

이 글은 2025년도 봄학기 KAIST 전산학부 대학원 면접을 준비하며, 면접 참고자료(Architecture)에 대한 대답을 정리한 글입니다.

문제에 대한 정답이 아니며, 제가 공부하며 생각한 바들을 정리한 것입니다.

후에 같은 목표로 면접을 준비하는 학우분들께 도움이 되기를 바랍니다.

이 풀이노트는 질문만 본 상태에서 답변한 내용에 대한 채점, 그리고 이 면접을 준비하며 이전에 한번 LLM과 함께 작성해본 답안이 이어져 있습니다.

문제

ISA (Instruction set architecture)

CISC와 RISC의 차이점은 무엇인가?

CISC와 RISC의 차이는 명령어셋의 수와, 그 복잡성에 있습니다. CISC가 월씬 많은 명령어셋이 있으며, 명령어에 따라 사이클 수가 다른 경우도 있습니다.

CISC는 Complex Insttruction Set Computer의 약자입니다. RISC에 비해 다양하고 복잡한 연산을 지원하는 대신, 명렬어의 실행 속도가 느리고, 파이프라이닝이 어렵습니다. 과거 어셈블리를 이용하려 개발하는 시절 복잡한 연산을 지원하기 위해 이용되었습니다.
RISC는 적고 간단한 고정 길이의 명령어셋으로 이루어져 있습니다. 파이프라이닝에 용이하며, 명령어의 실행 속도가 빠릅니다. 점차 고수준의 언어와 컴파일러를 이용하여 어셈블리를 생성하는 시대가 오면서, RISC가 대세가 되었습니다.


Register File과 Cache의 차이는 무엇인가?

레지스터는 캐시에 비해 그 크기가 매우 작으며, 접근속도가 매우 빠릅니다. 캐시는 레지스터 많은 워드를 저장하며, 메모리 주소와 데이터 블록의 쌍으로 이루어져 있습니다.

Register File은 CPU 내부에 있는 고속의 저장장치입니다. CPU가 Instruction에 필요한 데이터를 저장합니다. Cache는 메인 메모리 접근속도를 높이기 위한 장치로, 이전에 접근한 메모리의 주소와 값 쌍을 저장합니다. Register File의 개수가 훨씬 적습니다. Register는 매우 빠르게(단일 사이클 내에) 데이터를 읽고 쓸 수 있지만, Cache는 메모리 접근 속도에 따라 다르지만 일반적으로 수십 사이클이 걸립니다. 레지스터는 플립플롭이고, 캐시는 SRAM으로 구현됩니다.


Intel과 AMD가 만드는 CPU의 공통점과 차이점은 무엇인가?

둘 다 amd64 ISA를 이용합니다. 하지만 인텔은 칩을 통째로 사용하는 통합 다이였고, AMD는 각 역할을 담당하는 칩을 묶어둔 칩렛 구조입니다. 이처럼 같은 ISA를 사용하더라고 세부 구현이나 확장에서 차이가 있습니다.

둘다 x86 아키텍처를 기반으로 하는 CPU를 만듭니다. 하지만, 제조 공정, 아키텍처 설계, 캐시 구조 등에서 차이가 있습니다. Intel은 일반적으로 더 높은 클럭 속도와 더 많은 캐시를 제공하는 반면, AMD는 멀티코어 성능과 가격 대비 성능에서 우수한 경쟁력을 보입니다. 또한, AMD는 Zen 아키텍처를 기반으로 하여 높은 IPC(Instructions Per Cycle)를 제공합니다.

차이점은 amd는 칩렛 구조로, 각 칩렛이 독립적으로 동작할 수 있는 반면, Intel은 monolithic 구조로, 하나의 칩에 모든 코어가 통합되어 있습니다. 따라서 수율이 높고, 제조 비용이 낮은 amd가 가격 대비 성능에서 우수합니다.


Pipelined Architecture

파이프라이닝은 왜 하는가?

파이프라이닝은 IPC을 1 초과로 올리기 위해 사용합니다. 한 사이클을 여러 스텝으로 나누어, 여러 인스트럭션을 동시에 실행할 수 있습니다.

IPC를 올리기 위해섭니다.(= throughput을 올리기 위해서입니다.) 여러 명령을 동시에 실행하기 위해, 하나의 명령을 여러 스텝으로 나누고,각 스텝을 담당하는 유닛이 서로 다른 명령을 수행하고 있습니다. pipeline register = 래치 메모


파이프라인 해저드(Pipeline Hazard)란 무엇인가? 그리고 종류에는 무엇이 있는가?

파이프라인 해저드란 파이프라인 도중에 버블이 끼는 경우를 말합니다. 데이터 해저드, 컨트롤 해저드, 스트럭처 해저드가 있습니다. 데이터 해저드는 이전 명령어의 결과가 다음 명령어의 인수인 경우 발생하빈다. 컨트롤 해저드는 분기 명령어에서 발생합니다.

해저드란 인스트럭션 사이에 버블(nop과 유사하지만 약간 다름)이 끼는 현상을 말합니다. 데이터 해저드(데이터 처리가 끝나지 않은경우), 컨트롤 해저드, structural 해저드로 나눌 수 있습니다. 현실에선 structural 해저드가 일어나지 않음


파이프라이닝에서 Branch Prediction의 역할은 무엇인가?

브랜치 예측은 분기 지점에서 하나의 분기를 선택하여 미리 실행하고, 예측 결과가 맞을 경우 이어서 실행하고 틀렸다면 복구를 시도하여 실행속도를 높입니다.

Branch Prediction은 파이프라인에서 분기 명령어가 발생했을 때, 다음에 실행할 명령어를 예측하여 파이프라인의 흐름을 유지하는 역할을 합니다. 분기 명령어가 발생하면, 파이프라인이 멈추고 분기 결과를 기다리는 경우가 많습니다. 이때, Branch Prediction을 통해 다음에 실행할 명령어를 예측하여 파이프라인을 계속 진행시킬 수 있습니다. Branch Prediction은 예측이 맞으면 파이프라인의 흐름을 유지하고, 예측이 틀리면 파이프라인을 플러시하고 다시 시작해야 합니다.


Memory Hierarchy

캐시가 필요한 이유는? Cache hit ratio 에 대해 설명하시오

캐시는 느린 메모리 접근 속도를 극복하기 위해 사용합니다. 캐시 히트 비율은 전체 접근 수로 캐시 히트 수를 나눈 값입니다.

mem latency를 줄이기 위해 캐시를 사용합니다. 캐시는 메모리 접근 속도를 높이기 위해, 자주 사용하는 데이터를 저장하는 고속 메모리입니다. Cache hit ratio는 캐시에서 데이터를 찾을 확률을 나타내는 지표입니다. 캐시 hit ratio가 높을수록 캐시에서 데이터를 찾을 확률이 높아져, 메모리 접근 속도가 빨라집니다.


메모리 접근하는데 x 사이클이 걸리고 캐시에 접근하는데 y 사이클이 걸리며 캐시 hit rate 가 h %일 때 effective access time은?

y * h/100 + x * (100-h)/100 입니다.

y * h/100 + x * (1 - h/100)


페이지 폴트는 언제 발생하는가? 페이지 폴트 비율과 cache miss 비율 중 큰 것은? 그 이유는?

페이지 폴트는 가상 메모리 페이지에 매핑되는 물리 메모리 프레임이 없을 때 발생하빈다. 페이지 폴트가 페널티가 더 커서 캐시 미스 비율이 더 큽니다.

페이지 폴트는 프로세스가 접근하려는 페이지가 메모리에 없을 때 발생합니다. 이때 운영체제는 페이지를 디스크에서 메모리로 가져와야 합니다. 캐시 미스 비율이 페이지 폴트 비율보다 큰 경우가 많습니다. 그 이유는 페이지 폴트는 디스크 I/O가 발생하기 때문에 메모리 접근 속도가 느려지기 때문입니다.


Virtual Memory

캐시 메모리와 메인 메모리의 주소 지정 방식의 차이점이 무엇인가?

캐시는 보통 물리 주소와 데이터 블록의 쌍을 저장합니다. 메인 메모리는 접근은 보통 가상 메모리 주소를 이용합니다. 가상 메모리 주소를 MMU가 물리 메모리 주소로 변환하고 캐시에 존재하는지 확인합니다.

캐시 메모리는 물리 주소를 사용하고, 메인 메모리는 가상 주소를 사용합니다. 캐시 메모리는 CPU와 가까운 위치에 있어 빠른 접근 속도를 제공합니다. 메인 메모리는 CPU와 멀리 떨어져 있어 상대적으로 느린 접근 속도를 제공합니다. 캐시 메모리는 CPU가 직접 접근하고, 메인 메모리는 운영체제가 관리합니다.


ILP (Instruction Level Parallelism)

Superscalar와 Out-of-Order execution(OoO)의 모두 CPU의 성능을 높이기 위한 기법이다. 두 기법의 공통점과 차이점에 대해서 설명하시오.

슈퍼스칼라는 동일한 회로를 여러개 두어 여러 명령어를 동시에 실행하는 기법입니다. OoO도여러 명령어를 동시에 실행하고, 이를 순서에 맞추어 결과를 돌려줍니다. 슈퍼스칼라는 명령어의 실행 순서를 보장할 수 있지만, OoO는 실행 순서는 보장하지 않고, 결과가 순서대로 나오는것만 보장합니다.

둘다 IPC를 높이기 위한 기법입니다. Superscalar는 한 사이클에 여러 개의 명령어를 실행하는 기법입니다. 여러 개의 ALU를 사용하여 동시에 여러 개의 명령어를 실행합니다. Superscalar는 명령어의 순서를 유지해야 합니다. Out-of-Order execution(OoO)는 명령어를 순서대로 받지만, 실행 순서를 재배치하여 병렬로 실행하는 기법입니다. 명령어의 의존성을 분석하여, 실행 가능한 명령어를 먼저 실행합니다.


슈퍼스칼라와 VLIW(Very Long Instruction Word)의 차이점은 무엇인가?

슈퍼스칼라는 기존과 동일한 명령어셋을 사용하고, 이를 하드웨어에서 처리합니다. VLIW는 실행을 위해 별도로 컴파일된 명령어가 필요합니다.

슈퍼스칼라는 명령어를 동적으로 분석하여 병렬로 실행하는 기법입니다. 명령어의 의존성을 분석하여, 실행 가능한 명령어를 먼저 실행합니다. VLIW는 컴파일러가 판단하고, 병렬로 실행할 명령어를 미리 지정하는 기법입니다. 슈퍼스칼라는 하드웨어가 명령어의 의존성을 분석하고, 실행 순서를 재배치합니다. VLIW는 그래서 하드웨어 자체는 단순합니다. 명령어의 의존성을 컴파일러가 분석하고, 실행 순서를 미리 지정합니다. VLIW도 in-order


Cache

캐시를 구성하는 컴포넌트에 무엇이 있는가? 각 컴포넌트는 어떤 역할을 하는가?

캐시는 태그와 블록 데이터로 이루어진 테이블입니다. 물리 주소의 인덱스 비트를 이용하여 캐시 라인을 확인하고, 물리 주소의 태그와 캐시의 태그를 비교하여 일치하면, 데이터 블록에서 오프셋에 맞추어 데이터를 가져옵니다.

인덱스, 태그, 데이터, 각종 비트마스크로 구성됩니다. 인덱스는 캐시에서 데이터를 찾기 위한 주소입니다. 태그는 캐시에서 데이터를 찾기 위한 주소의 상위 비트입니다. 데이터는 캐시에 저장된 실제 데이터입니다. 비트마스크는 캐시의 상태를 표기하는 비트입니다. 예를 들어, 유효 비트(valid bit)는 해당 캐시 라인이 유효한지 여부를 나타냅니다.


캐시에서 태그 매칭이 무엇이고 왜 필요한가?

캐시의 태그 매칭은 캐시가 보관하는 데이터가 실제물리 주소와 일치하는지 확인합니다. 태그 길이는 물리 주소의 비트 수에서 오프셋 비트 수와 인덱스 비트 수를 빼서 구할 수 있습니다.


캐시에서 블록(라인) 크기를 크게 했을 때와 작게 했을 때 어떤 장단점이 있을까?

블록 라인 크기를 크게 하면 한번에 가져오는 데이터 양이 늘어나 spatial locality에 유리하지만, 한번에 가져오는 데이터 수가 늘어 캐시 미스 페널티가 늘어나고, 불필요한 데이터를 많이 가져올 수 있습니다.

블록 크기를 크게 하면, 캐시의 hit ratio가 높아집니다. 하지만, 캐시의 크기가 커지므로, 캐시의 miss penalty가 커집니다. 블록 크기를 작게 하면, 캐시의 hit ratio가 낮아집니다. 하지만, 캐시의 크기가 작아지므로, 캐시의 miss penalty가 작아집니다.


Direct-mapped cache와 set-associative cache의 장단점은 무엇인가?

Direct-mapped cache는 캐시 탐색 시간이 가장 짧습니다. 하지만 같은 인덱스에 대해 하나의 태그만 보관할 수 있어 hit ratio가 낮습니다. set-associative cache는 동일한 인덱스에 대해 여러 태그를 보관할 수 있어서 hit ratio가 높습니다. 하지만 태그를 확인하는 시간이 길어져 탐색 시간이 깁니다.

검색 속도는 Direct-mapped cache가 빠릅니다. 하지만, 충돌이 발생할 확률이 높습니다. Set-associative cache는 검색 속도가 느리지만, 충돌이 발생할 확률이 낮습니다. 회로의 복잡성은 Direct-mapped cache가 낮습니다. Set-associative cache는 회로가 복잡합니다.


Write-through cache와 write-back cache에 대해서 설명해 보시오.

메모리 write이 일어났을 때 캐시의 두 가지 전략입니다. Write-through cache는 변경된 블록을 바로 메모리에 적용합니다. write-back cache는 변경된 블록을 바로 적용하지 않고, flush가 일어나는 순간 적용합니다.

Write-through cache는 캐시에 데이터를 쓸 때, 메인 메모리에도 동시에 데이터를 쓰는 방식입니다. 이 방식은 데이터의 일관성을 유지할 수 있지만, 쓰기 속도가 느립니다. Write-back cache는 캐시에 데이터를 쓸 때, 메인 메모리에 데이터를 쓰지 않고, 캐시에서만 데이터를 업데이트하는 방식입니다. 이 방식은 쓰기 속도가 빠르지만, 데이터의 일관성을 유지하기 위해 캐시에서 데이터를 메인 메모리에 쓰는 과정이 필요합니다. 이 과정을 write-back이라고 합니다.


Write-through cache는 write buffer를 보통 사용하는데 이의 역할은 무엇인가?

Write-through cache가 직접 write을 수행할경우 오버헤드가 큽니다. 그래서 캐시와 메모리 사이에 write buffer를 두고 비동기적으로 write를 수행하는 것으로 압니다.

Write buffer는 캐시에 데이터를 쓸 때, 메인 메모리에 데이터를 쓰는 작업을 버퍼링하는 역할을 합니다. Write buffer는 캐시에 데이터를 쓸 때, 메인 메모리에 데이터를 쓰는 작업을 비동기적으로 수행합니다. 이렇게 하면, 캐시에 데이터를 쓰는 작업과 메인 메모리에 데이터를 쓰는 작업을 동시에 수행할 수 있습니다. Write buffer는 캐시에 데이터를 쓸 때, 메인 메모리에 데이터를 쓰는 작업을 버퍼링하여, 캐시에 데이터를 쓰는 작업의 속도를 높이는 역할을 합니다.


Cache에서 사용하는 replacement policy에는 어떤 것이 있는가?

FIFO, LIFO, LRU, LFU 등이 있습니다.

캐시에서 사용하는 replacement policy에는 LRU(Least Recently Used), FIFO(First In First Out), LFU(Least Frequently Used) 등이 있습니다. Random replacement policy, Clock algorithm, second chance 도 있습니다. LRU는 가장 오랫동안 사용 되지 않은 데이터를 교체하는 정책입니다. FIFO는 가장 먼저 들어온 데이터를 교체하는 정책입니다. LFU는 가장 적게 사용된 데이터를 교체하는 정책입니다. Random replacement policy는 랜덤하게 데이터를 교체하는 정책입니다. Clock algorithm은 LRU와 비슷하지만, 캐시를 원형으로 돌면서 데이터를 교체하는 정책입니다. Second chance는 Clock algorithm의 변형으로, 사용된 데이터를 교체하지 않고, 사용되지 않은 데이터를 교체하는 정책입니다.


Multiprocessor, Multi-core

코어가 10개 있는 cpu에서 프로세스 하나를 균등하게 처리하면 이상적인 경우, 시간이 얼마나 줄어드는가? 그런데 프로세스에서 분할되지 않는 20%의 작업이 있다고 하면, 시간이 얼마나 줄어드는가? 이제 코어가 수백개, 혹은 무한개 있다고 하면 얼마나 줄어드는가?

암달의 법칙에 의해 무한개여도 속도는 최대 5배 빨라집니다.

암달의 법칙을 따른다 이론적으로 코어가 10개일 때, 프로세스가 균등하게 분할되면 10배 빨라집니다. 하지만, 분할되지 않는 20%의 작업이 있다면, 10배 빨라지지 않습니다. 암달의 법칙에 따르면, 병렬화 가능한 부분이 80%라면, 28%로 줄어듭니다.