본문 바로가기

분류 전체보기167

NUMA(Non-Uniform Memory Access)는 왜 존재할까 컴퓨터 구조를 공부하다 보면 어느 순간부터는 “CPU가 얼마나 빠른가”보다 “데이터를 얼마나 빨리 가져올 수 있는가”가 훨씬 중요한 문제처럼 느껴지기 시작한다. 나도 처음에는 CPU 성능이라는 게 결국 계산 속도 싸움이라고 생각했었다. 그런데 캐시 구조, 메모리 접근, False Sharing 같은 개념들을 하나씩 보다 보니까 현대 컴퓨터는 오히려 “기다리는 시간을 줄이는 방향”으로 계속 발전하고 있다는 게 보이기 시작했다. 그리고 그 흐름 끝에서 등장하는 개념 중 하나가 바로 NUMA(Non-Uniform Memory Access)다.처음 NUMA라는 단어를 봤을 때는 솔직히 무슨 의미인지 전혀 감이 안 왔다. 이름도 너무 길고 어려워 보였다. 그런데 구조를 이해하고 나니까 핵심은 생각보다 단순했다. .. 2026. 5. 19.
False Sharing은 왜 멀티코어 성능을 떨어뜨릴까 멀티코어 CPU와 캐시 구조를 공부하다 보면 생각보다 이상한 상황들이 꽤 많이 등장한다. 그중 하나가 바로 False Sharing이다. 처음 이름만 들었을 때는 솔직히 무슨 의미인지 전혀 감이 안 왔다. “Sharing이면 공유라는 건데, 왜 False라는 말이 붙지?” 나도 처음에는 그냥 메모리를 잘못 공유하는 문제 정도로만 생각했다. 그런데 실제 구조를 이해하고 나니까 이게 단순한 버그가 아니라, 멀티코어 CPU에서 성능을 엄청 떨어뜨릴 수도 있는 꽤 중요한 문제라는 걸 알게 됐다.특히 인상 깊었던 건, 코드 자체는 멀쩡하게 동작하는데도 성능만 갑자기 심하게 떨어질 수 있다는 점이었다. 즉, 프로그램은 정상인데 CPU 내부에서는 코어끼리 계속 싸우고 있는 상황이 생기는 것이다. 멀티코어 CPU는 서.. 2026. 5. 19.
하이퍼스레딩(Hyper-Threading)은 실제 코어와 무엇이 다를까 CPU 스펙을 보다 보면 “8코어 16스레드” 같은 표현을 정말 자주 보게 된다. 처음에는 나도 이 숫자를 그냥 “성능이 좋은 CPU인가 보다” 정도로만 생각했다. 그런데 조금 더 찾아보니까 여기서 말하는 코어(Core)와 스레드(Thread)는 완전히 같은 개념이 아니었다. 특히 인텔 CPU에서 자주 등장하는 하이퍼스레딩(Hyper-Threading) 기술은 처음 이해할 때 꽤 헷갈렸던 기억이 있다. 이름만 보면 마치 CPU 코어가 갑자기 두 배가 되는 느낌인데, 실제로는 생각보다 훨씬 복잡한 구조였다.나도 예전에는 “8코어 16스레드면 거의 16코어 같은 거 아닌가?”라고 생각했었다. 그런데 실제 성능 테스트를 보다 보니까, 물리 코어가 늘어나는 것과는 차이가 꽤 크다는 걸 알게 됐다. 그 이후로는 .. 2026. 5. 18.
멀티코어 CPU는 어떻게 동시에 작업할까 예전 컴퓨터를 떠올려보면 CPU 성능을 이야기할 때 대부분 클럭 속도(GHz)만 강조했던 기억이 있다. 그런데 어느 순간부터는 “듀얼코어”, “쿼드코어”, “8코어 16스레드” 같은 표현이 훨씬 많이 보이기 시작했다. 나도 처음에는 그냥 숫자가 많을수록 좋은 건가 보다 정도로만 생각했다. 그런데 CPU 구조를 조금씩 공부하다 보니까, 단순히 코어 수를 늘리는 건 생각보다 훨씬 복잡한 문제였고, 실제로는 운영체제와 프로그램이 작업을 얼마나 효율적으로 나누느냐까지 전부 연결되어 있다는 걸 알게 됐다.특히 예전 노트북에서는 게임 하나만 켜도 다른 작업이 거의 불가능했던 반면, 요즘 컴퓨터에서는 게임을 하면서 브라우저를 여러 개 띄우고 영상까지 동시에 재생하는 게 자연스럽게 되는 걸 보면서 “컴퓨터가 실제로 동.. 2026. 5. 18.
Speculative Execution은 왜 필요할까 파이프라인, 분기 예측, Out-of-Order Execution 같은 CPU 구조를 하나씩 공부하다 보면 결국 공통된 목표가 하나 있다는 걸 느끼게 된다. 바로 CPU가 최대한 멈추지 않고 계속 움직이게 만드는 것이다. 나도 처음에는 CPU가 그냥 계산만 엄청 빠르게 하는 장치라고 생각했는데, 실제로는 “기다리는 시간”을 얼마나 줄이느냐가 훨씬 중요한 문제라는 걸 알게 됐다. 그리고 그 흐름 끝에서 등장하는 기술 중 하나가 바로 Speculative Execution이다.처음 이름을 봤을 때는 솔직히 무슨 SF 영화 용어 같았다. 그런데 구조를 이해하고 나니까 생각보다 핵심 아이디어는 단순했다. CPU가 “아마 이렇게 될 가능성이 높다”라고 판단하면, 결과가 확정되기 전인데도 미리 실행해버리는 것이다... 2026. 5. 17.
TLB(Translation Lookaside Buffer)는 왜 필요할까 가상 메모리와 CPU 캐시 구조까지 공부하고 나면 자연스럽게 한 가지 의문이 생긴다. “CPU는 메모리에 접근할 때 실제로 어떤 주소를 사용하는 걸까?” 나도 처음에는 프로그램이 사용하는 주소가 곧 실제 RAM 주소라고 생각했었다. 그런데 운영체제 구조를 조금 더 찾아보니까, 프로그램은 실제 메모리 주소를 직접 사용하는 게 아니라 가상 주소(Virtual Address)를 사용하고 있었고, CPU는 그걸 실제 물리 주소(Physical Address)로 계속 변환하면서 동작하고 있었다.처음에는 “주소 변환 정도야 금방 되는 거 아닌가?”라고 생각했다. 그런데 현대 CPU는 워낙 빠르게 움직이다 보니까, 이 주소 변환 과정조차 반복되면 엄청난 성능 문제가 될 수 있었다. 그리고 그 문제를 줄이기 위해 등장.. 2026. 5. 17.