포스트

[CS] 컴퓨터 아키텍쳐

컴퓨터 아키텍쳐

캐시

  1. 캐시 메모리는 어디에 위치해 있나요?

    • 캐시 메모리는 CPU와 메인 메모리(RAM) 사이에 위치하여 속도 차이를 줄이기 위해 사용됩니다. • L1 캐시: CPU 코어 내부에 가장 가까운 메모리(최소 용량, 최대 속도). • L2 캐시: CPU 코어 외부에 위치하며, L1 캐시보다 느리지만 더 큰 용량을 가짐.

  2. L1, L2 캐시에 대해 설명해 주세요.

    • L1 캐시: • CPU 코어마다 개별적으로 존재. • 용량: 보통 16~128KB • 속도: 매우 빠름 (CPU와 같은 속도로 동작). • 구분: 명령어 캐시(Instruction Cache), 데이터 캐시(Data Cache)로 나뉘기도 함. • L2 캐시: • CPU 코어당 하나씩 존재하거나 여러 코어가 공유 가능. • 용량: 보통 수백 KB ~ 몇 MB. • 속도: L1보다 느리지만 여전히 매우 빠름.

  3. 캐시에 올라오는 데이터는 어떻게 관리되나요?

    • 캐시 관리 정책: • 쓰기 정책: • Write-through: 캐시와 메인 메모리에 동시에 쓰기. • Write-back: 캐시에만 쓰고, 나중에 메인 메모리에 동기화. • 교체 정책 (Cache Replacement Policy): • LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 데이터를 제거. • FIFO (First In, First Out): 먼저 들어온 데이터를 제거. • Random: 임의의 데이터를 제거.

  4. 캐시간의 동기화는 어떻게 이루어지나요?

    • 캐시 일관성(Cache Coherency) 프로토콜: • 여러 CPU 코어가 동일한 메모리 데이터를 캐시할 때 데이터 일관성을 유지하는 방식입니다. • 주요 프로토콜: • MESI (Modified, Exclusive, Shared, Invalid): 가장 널리 사용되는 캐시 동기화 프로토콜. • MOESI, MSI: MESI의 확장 형태.

  5. 캐시 메모리의 Mapping 방식에 대해 설명해 주세요.

    • 캐시 메모리는 Mapping 방식을 사용해 주 메모리 주소를 캐시 메모리 위치와 연결합니다.

    1. 직접 사상(Direct Mapping): 특정 메모리 블록이 고정된 캐시 슬롯에만 저장 가능.
    2. 완전 연결 사상(Fully Associative): 메모리 블록이 캐시의 모든 슬롯에 저장 가능 (비용 큼).
    3. 집합 연결 사상(Set-Associative): 메모리 블록이 특정 집합의 여러 슬롯 중 하나에 저장 가능 (Direct와 Fully의 절충).
  6. 캐시의 지역성에 대해 설명해 주세요.

    • 지역성(Locality): 프로그램이 메모리에 접근하는 패턴을 예측하는 성질입니다. • 시간 지역성(Temporal Locality): 최근에 접근한 데이터에 다시 접근할 가능성이 높음. • 공간 지역성(Spatial Locality): 특정 메모리 위치에 접근했다면 근처 메모리에도 접근할 가능성이 높음.

  7. 캐시의 지역성을 기반으로, 이차원 배열을 가로/세로로 탐색했을 때의 성능 차이에 대해 설명해 주세요.

    • 이차원 배열 탐색: 메모리는 행 우선(row-major order)으로 저장됩니다(일반적인 언어: C, C++). • 가로 탐색 (Row-wise): • 공간 지역성이 좋음 → 같은 행의 연속된 메모리에 접근. • 캐시 히트율이 높음. • 세로 탐색 (Column-wise): • 다른 행으로 점프하며 접근 → 공간 지역성 부족. • 캐시 히트율이 낮음.

  8. 캐시의 공간 지역성은 어떻게 구현될 수 있을까요? (힌트: 캐시는 어떤 단위로 저장되고 관리될까요?)

    • 캐시 블록(Cache Block) 단위로 관리: • 메모리 데이터를 블록 단위로 가져옵니다. • 공간 지역성을 위해 데이터 주변 값들(인접 주소들)도 함께 가져와 캐시 블록에 저장합니다. • 예: 블록 크기가 64바이트라면, 기준 메모리 주소 + 63바이트 범위까지 캐시에 저장.

결론 요약:

1
2
3
4
5
6
7
8
•	캐시 메모리 위치: CPU와 RAM 사이.
•	L1, L2 캐시: CPU 가까운 쪽일수록 작고 빠름.
•	데이터 관리: 교체 정책(LRU, FIFO) 및 쓰기 정책.
•	캐시 동기화: MESI 등 프로토콜 사용.
•	캐시 매핑: 직접 사상, 집합 연결 사상 등.
•	지역성: 시간/공간 지역성을 기반으로 성능 최적화.
•	2D 배열 탐색: 행 우선(row-major) 탐색이 효율적.
•	캐시 블록 관리: 공간 지역성을 위해 연속된 메모리 블록을 관리.

정수형, 소수점형에 대해

정수, 부동 소수점, 고정 소수점과 보수 - 간략 정리

  1. 정수형 (Integer)

    • 정의: 소수점 없는 정수 값 (예: -10, 0, 42). • 표현 방식: • 부호 비트(Sign Bit): 최상위 비트를 부호로 사용 (0 양수, 1 음수). • 음수 표현: 2의 보수(2’s Complement) 사용. • 범위: 비트 수에 따라 정해짐 (예: C의 int는 32비트 → -2³¹ ~ 2³¹ - 1).

예시:

+10 → 0000 0000 0000 1010 (부호 비트: 0) -10 → 1111 1111 1111 0110 (2의 보수)

  1. 고정 소수점 (Fixed-Point)

    • 정의: 소수점이 고정된 위치에 있는 실수 표현 방식. • 표현 방식: 정수처럼 부호 비트 + 정수부 + 소수부로 나뉨. • 음수 표현: 2의 보수(2’s Complement) 사용 가능. • 장점: 정확한 값 표현(오차 없음). • 단점: 고정된 소수점 위치로 범위와 정밀도 제한.

예시 (16비트 고정 소수점):

+5.75 → 0 00000101 11000000 (부호 비트: 0) -5.75 → 1 11111010 01000000 (2의 보수)

  1. 부동 소수점 (Floating-Point)

    • 정의: 소수점이 유동적인 실수 표현 방식 (과학적 표기법 유사). • 표현 방식: IEEE 754 표준 사용: • 부호 비트(Sign Bit): 0 양수, 1 음수. • 지수(Exponent): 바이어스(bias) 값으로 음수 지수 표현 가능. • 가수(Mantissa): 유효 숫자 값. • 음수 표현: 2의 보수 미사용, 지수 바이어스 방식 사용. • 장점: 넓은 표현 범위 지원 (작은 수~큰 수). • 단점: 근사치 저장 → 오차 발생.

IEEE 754 예시 (32비트):

-5.75 → 1 10000001 01110000000000000000000

비교 요약 표: 정수, 고정 소수점, 부동 소수점

속성 정수형 (Integer) 고정 소수점 (Fixed-Point) 부동 소수점 (Floating-Point) 소수점 위치 없음 고정 위치 가변적 (유동적) 부호 비트 사용 ✅ (최상위 비트) ✅ (최상위 비트) ✅ (최상위 비트) 음수 표현 방식 2의 보수 사용 2의 보수 사용 지수 바이어스 방식 범위와 정밀도 정수 범위 제한 제한적 (정밀도 고정) 넓은 범위, 가변 정밀도 표현 오차 없음 (정확) 없음 (정확) 근사치 저장 → 오차 가능 사용 사례 카운터, 인덱스 금융, 통화 계산 물리 시뮬레이션, 과학적 계산

결론 요약

1
2
3
1.	정수형: 소수점 없음, 2의 보수 방식으로 음수 표현.
2.	고정 소수점: 소수점 고정 위치, 정확한 소수 계산, 음수 시 2의 보수 사용.
3.	부동 소수점: 소수점 가변 위치, 지수 바이어스 사용, 큰 범위 지원, 오차 발생 가능.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.