전체 글 60

[CXL] 1. Motivation and Overview

해당 연재물은 CXL 3.1 스펙을 번역한 것이 주를 이루며, 필요시 약간의 주석을 넣었습니다. (https://computeexpresslink.org/cxl-specification/) CXL은 가속기 및 메모리 장치를 지원하도록 설계된 동적 다중 프로토콜 기술입니다. CXL은 PCIe와 유사한 I/O 의미론(CXL.io), 캐싱 프로토콜 의미론(CXL.cache), 및 메모리 액세스 의미론(CXL.mem)을 포함한 다양한 프로토콜 세트를 제공합니다.  CXL.io는 발견 및 열거, 오류 보고, CXL 메모리 및 호스트 물리 주소 (HPA) 조회를 위해 필요합니다. CXL.cache 및 CXL.mem 프로토콜은 특정 가속기 또는 메모리 장치 사용 모델에 따라 선택적으로 구현될 수 있습니다. CXL의 ..

CXL-SpecsReview 2023.12.20

Power management

8.15 Power Management 전원 관리 기능을 통해 호스트는 NVM 하위 시스템 전원을 정적으로 또는 동적으로 관리할 수 있습니다. 정적 전원 관리는 호스트가 NVM 하위 시스템에 할당할 수 있는 최대 전력을 결정하고 NVM Express 전원 상태를 이 전력량 이하를 소비하는 상태로 설정하는 것으로 구성됩니다. 동적 전원 관리는 그림 452에 설명되어 있으며 변화하는 전원 및 성능 목표를 가장 잘 충족시키기 위해 NVM Express 전원 상태를 수정하는 호스트로 구성됩니다. 이 전원 관리 메커니즘은 컨트롤러가 수행하는 자율적인 전원 관리 또는 열 관리를 대체하는 것이 아니라 보완하기 위한 것입니다. 컨트롤러에 의해 구현된 전원 상태 수는 식별 컨트롤러 데이터 구조의 지원되는 전원 상태 수(..

NVMe 2023.11.24

netplan 고정 IP 설정시, 서브넷 마스크 작성법

snetmask 255.255.255.0 게 어떻게 24가 되는가? netmask 를 모두 2진수로 변경한 다음 , 왼쪽에서 부터 1이 모두 몇개인지 쓴다. 예) 255.255.255.0 = 11111111.11111111.11111111.00000000 = 8 + 8 + 8 + 0 = 24 255.255.254.0 = 11111111.11111111.11111110.0 = 8+8+7+0 = 23 ## 참조 ## netplan 설정하는 방법: https://blog.dalso.org/article/ubuntu-20-04-lts-nework Ubuntu 20.04 LTS 네트워크 연결하기.(고정IP 할당) - 달소씨의 하루 Connection failed Activation of network connec..

SystemProgramming 2022.04.22

Features and Log pages

Feature 는 SSD 의 설정값을 지칭한다. Set Feature command를 통해 해당 설정값을 쓸 수 있고, Get Feature command를 통해 해당 설정 값을 읽어 올 수 있다. NVMe 2.0 Spec. 기준으로 Feature Identifiers (FIDs) No. Feature Identifier Feature Name 1 01h Arbitration 2 02h Power Management 3 04h Temperature Thgreshold 4 06h Volatile Write Cache 5 07h Number of Queues 6 08h Interrupt Coalescing 7 09h Interrupt Vector Configuration 8 0Bh Asynchronous E..

NVMe 2022.03.24

Persistent Event Log Page

Command type Admin Opcode 02h Get llog Page Log Page Identifier (LID) 0Dh Persistent Event Log Get log Page 의 Log Identifier 0Dh 는 Persistent Event Log Page 를 가져온다. Persistent Evnet Log Page는 특정한 command 에 특화된 event가 아닌, 중다한 event 들에 대한 정보를 담고 있다. 이 정보들은 power cycle 이나, reset 을 해도 그대로 유지 된다. NVM subsystem 은 power 문제가 발생시에도, 정보의 손실이 최소화 되도록 설계되어 있어야 한다. 해당 log는 log 를 설명하는 header 와 0 또는 더 많은 persi..

NVMe 2022.03.22

Device PM States

ACPI 는 device level 에서의 PM 상태에 대해 아래와 같이 정의한다. Device Context 는 무엇입니까? 일반적으로 device가 정상동작 할 경우, device의 동작 상태는 지속적으로 변경된다. Device는 아마도 자신의 register를 쓰거나 읽거나 또는 device의 local processor는 아마도 시스템가 상호 작용하는 부분에 영향을 미치는 코드를 실행 할 것이다. 주어진 순간의 장치 상태는 다음을 포함합니다. 해당 device의 configuration register의 내용 해당 devcie의 local memory 와 IO register 들의 상태 만약 device가 processor를 포함하고 있다면, 현재의 program pointer 와 해당 디바이스의..

PCIe 2022.02.21

User ID/Group ID

ls -l 로 출력 되는 항목을 보면 , 다음과 같이 카테고리를 나눌 수 있다. ben@ben-ubuntu-server:~/share/apue_github/apue/ben$ ls -l total 180 -rw-rw-r-- 1 ben ben 21 Jun 15 08:14 data -rwxrwxr-x 1 ben ben 17632 Jun 17 02:26 fig1_3 -rw-rw-r-- 1 ben ben 397 Jun 15 07:21 fig1_3.c 1) 파일 유형. '-' 는 일반파일, 'd'는 디렉토리, 'b' 는 블록 디바이스, 'c'는 문자 디바이스, 'I'는 링크를 뜻한다. 2) 허가권 'r' 은 read able , 'w' 는 write able , 'x' sms execute able 이다. 3자리씩..

SystemProgramming 2021.06.17

apue.3e 컴파일 하기

Advanced Programming in the UNIX Environment Thrd Edition 의 예제를 compile 하려면 다음과 같이 하면 된다. Source code download : https://github.com/vdpa4me/apue.git vdpa4me/apue Example of Advanced Programming in the UNIX Environment - vdpa4me/apue github.com /apue/apue.3e/lib 로 이동한다. Makefile 을 editor 로 열어서, 아래 부분을 수정한다. PLATFORM=$(shell $(ROOT)/systype.sh) 부분을 PLATFORM=linux 로 변경한다. (systype.sh 실행시 permission..

SystemProgramming 2021.06.15

Linux , caller (호출자) 가 누구인지 아는 방법

어떤 함수 a() 가 다양한 프로세스에 의에 빈번하게 호출 된다면, log 로 남길 때, 누가 본인을 호출 했는지 확인 하고자 하는 경우가 있다. 실험 환경은 Ubuntu Linux 5.3.1 계열의 x86_64 아키텍쳐 이다. backtrac 를 사용하는 예) #include #include #include #include int nptrs; void *buffer[BT_BUF_SIZE]; char **strings; nptrs = backtrace(buffer, BT_BUF_SIZE); rintf("backtrace() returned %d addresses\n", nptrs); strings = backtrace_symbols(buffer, nptrs); if (strings == NULL) { p..

SystemProgramming 2021.05.21