Computer Architecture7 PCIe Enumeration Introduction 펌웨어와 운영체제는 컴퓨터에 어떤 PCI(e) 디바이스들이 있는지 어떻게 발견할까? 이전 글에서는 ACPI MCFG 테이블과 PCI Function의 BDF 번호를 알면 특정 Function의 Configuration Space의 위치를 알 수 있다고 했다. 그런데 어떤 디바이스들이 컴퓨터에 연결되었는지를 먼저 알아야 Configuration Space를 읽든 말든 할 수 있다. 펌웨어와 운영체제는 부팅 직후 컴퓨터에 어떤 디바이스들이 있는지 알지 못한다. 부팅 직후 디바이스를 하나씩 발견하는 과정을 Enumeration이라고 한다. PCI Endpoint (Type 0) and Bridge (Type 1) Enumeration을 더 설명하기 전에 우리는 브리지에 관해 더 알아볼 .. 2023. 11. 30. PCIe Configuration Space Bus, Device, Function Configuration Space와 Enumeration을 다루기 전에, BDF (Bus, Device, Function)이 무엇인지 알아보자. PCI와 PCIe에서는 PCI 도메인(or PCI 세그먼트)당 최대 256개의 버스가 존재할 수 있고, 버스당 최대 32개의 디바이스, 디바이스당 최대 8개의 펑션(function)이 존재할 수 있다. PCI(e) 시스템에서 (Bus, Device, Function)은 PCI 도메인 (or PCI 세그먼트) 내에서 디바이스를 식별할 수 있다. 리눅스에서는 'lspci' 명령어로 PCI(e) 디바이스의 B/D/F를 확인할 수 있다. PCI(e) Configuration Space 운영체제는 어떻게 디바이스와 상호작용할까? .. 2023. 11. 30. An Introduction to PCI Express Introduction 컴퓨터 조립을 해봤다면 한 번쯤 PCIe에 대해서 들어봤을 것이다. 예를 들어서 "이 NVME SSD는 PCIe 4.0을 지원해서 높은 대역폭을 보여준다"던가 말이다. PCIe는 컴퓨터 시스템에 고성능 디바이스(GPU, 네트워크 카드 등)를 연결하기 위한 표준 인터페이스이다. 이 글은 PCIe가 무엇이고, 이전에 사용되던 PCI에서 어떻게 발전했는지를 다룬다. 또한 PCIe 시스템을 구성하는 루트 컴플렉스, 스위치, 브리지와 엔드포인트 등의 구성요소와 이것이 어떻게 소프트웨어에서 표현되는지를 다룬다. PCI vs. PCI Express PCIe (Peripheral Component Interconnect Express)는 프로세서와 디바이스, 혹은 디바이스와 디바이스가 통신하기 .. 2023. 11. 15. 메모리 일관성 모델 (Memory Consistency Model) 이 글에서는 메모리 일관성 모델이 무엇이며, 컴퓨터 구조에서 store buffer와 invalidate queue가 어떤 역할을 하고, 메모리 접근 연산의 일관성을 어떻게 유지할 수 있는지 알아본다. 메모리 배리어도 자세하게 정리하려고 했으나 글 하나에 담기엔 너무 길어져서 따로 정리해야겠다. 용어 정리 글을 쓰다보니 용어 하나 하나의 의미를 구분하는 게 생각보다 중요했다. 용어를 헷갈리기 시작하면 내용 전체가 헷갈린다. 그러니 용어를 먼저 정리해보자. program order, execution order, perceived order [1]에서는 메모리 연산이 코드에 명시된 순서를 program order, 메모리를 참조 명령어들이 실행되는 순서를 execution order, 메모리 연산의 결과가.. 2022. 8. 4. PIPT / VIVT / VIPT 캐시와 flush_dcache_folio() 오랜만에 글을 쓴다. 이번 글에서는 PIPT, VIPT, VIVT 캐시의 특성을 정리하고 페이지 캐시에서 언제 flush_dcache_folio()를 호출해야하는지 정리해본다. 캐시 복습 우선 캐시를 간단하게 복습해보자. (자세하게는 다루지 않는다!) 캐시는 너무 thrashing이 잦은 direct mapped 캐시나 현실적으로 너무 비싼 fully associative 캐시보다는 set associative 캐시가 주로 사용된다. 아주 엉성하게 그림을 그려봤는데... 위 그림은 같은 인덱스를 갖는 캐시 라인들을 set이라고 부르고, 4-way라서 하나의 set에 4개의 캐시 라인이 있다는 걸 표현하고자 했다. direct mapped 캐시와는 달리 N-way set associative 캐시는 인덱스.. 2022. 6. 25. 다시 정리하는 NUMA NUMA: Non-Uniform Memory Access NUMA: Non-Uniform Memory Access 메모리 관련 부분을 공부하다보니 NUMA가 많이 나와서 정리해본다. 이 글은 Christoph Lameter의 2013년 문서 "NUMA: An Overview"를 리뷰한 것이다. NUMA는 멀티 프로세서 환경.. hyeyoo.com 이전에 정리했던 NUMA 글은 컴퓨터에서 CPU와 접근하려는 물리 주소에 따라서 접근하는 지연시간이 다를 수 있다는 것과, 그래서 왜 메모리 할당자와 스케줄러가 NUMA 아키텍처를 고려해야 하는지, NUMA 아키텍처에서의 allocation policy와 reclamation 등을 다루었다. 그런데 NUMA에 대해서 생각해보니 아직 왜 NUMA라는 방식이 생겼는.. 2022. 1. 21. 이전 1 2 다음