ACPI
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
ACPI(Advanced Configuration and Power Interface)는 컴퓨터의 전원 관리 및 장치 설정을 위한 표준 인터페이스이다. 1996년 처음 출시되어 여러 차례 개정되었으며, 최신 버전은 2022년 8월에 출시된 6.5 버전이다. ACPI는 시스템의 전원 상태(S0~S5, G0~G3)와 장치 상태(D0~D3), CPU 전원 상태(C0~C6), 성능 상태(P0~Pn)를 정의하여, 운영 체제가 하드웨어를 제어하고 전력을 효율적으로 관리할 수 있도록 한다. 주요 구성 요소로는 ACPI BIOS, ACPI 테이블, ACPI 머신 언어(AML) 등이 있으며, 윈도우, macOS, 리눅스 등 다양한 운영 체제에서 지원된다.
더 읽어볼만한 페이지
- 개방형 표준 - 오픈 핸드셋 얼라이언스
오픈 핸드셋 얼라이언스(OHA)는 구글을 중심으로 2007년 11월에 결성된 컨소시엄으로, 34개의 기업이 참여하여 안드로이드 모바일 플랫폼을 개발 및 발전시키고 개방형 표준 설계를 통해 혁신적인 모바일 기기 및 서비스 개발을 목표로 한다. - 개방형 표준 - 디지털 비디오 방송
디지털 비디오 방송(DVB)은 유럽에서 개발된 디지털 텔레비전 방송 표준으로, 위성, 케이블, 지상파 등 다양한 전송 방식을 지원하며 전 세계적으로 아날로그 방송 종료와 디지털 방송 전환을 주도하고 있고, 최근에는 인터넷 프로토콜 기반의 DVB-I 서비스로 발전하고 있다. - 컴퓨터 하드웨어 표준 - S/PDIF
S/PDIF는 디지털 오디오 전송을 위한 인터페이스 표준으로, 동축 케이블이나 광섬유를 통해 CD, DVD 플레이어, 컴퓨터 등에서 오디오 신호를 출력하며, 소비자용 기기에서 SCMS를 지원하고 돌비 디지털, DTS와 같은 압축된 오디오 신호를 전송하여 서라운드 사운드를 구현하는 데 사용된다. - 컴퓨터 하드웨어 표준 - RS-232
RS-232는 데이터 단말 장치와 데이터 회선 종단 장치 간 직렬 통신을 위한 표준 인터페이스로, 터미널-모뎀 연결을 위해 개발되었으나 현재는 일부 산업 장비 및 시스템 콘솔 포트 등에 사용되며 전기적 신호 특성, 인터페이스 기계적 특성, 회로 기능 등을 정의하고 25핀 또는 9핀 D-서브미니어처 커넥터를 사용한다. - 바이오스 - 아메리칸 메가트렌즈
아메리칸 메가트렌즈(AMI)는 1985년에 설립된 회사로, BIOS 펌웨어, 서버용 마더보드, 스토리지 컨트롤러 등을 공급하며, 현재는 AMIBIOS, Aptio, AMIDiag 등 다양한 제품을 제공한다. - 바이오스 - 부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
| ACPI | |
|---|---|
| 일반 정보 | |
| 약칭 | ACPI |
| 개발 시작 년도 | 1996년 |
| 최초 발표일 | 1996년 12월 |
| 최신 버전 | 6.5 |
| 최신 버전 날짜 | 2022년 8월 |
| 조직 | ACPI SIG (1996–2013) UEFI 포럼 (2013–현재) |
| 도메인 | 전원 관리 펌웨어 |
| 웹사이트 | ACPI 웹사이트 |
| 이전 표준 | |
| 관련 표준 | |
2. 역사
ACPI는 전력 관리 및 구성 표준으로, 1996년 12월에 처음 발표된 이후 지속적으로 발전해 왔다. 1999년 당시 마이크로소프트 CEO였던 빌 게이츠는 리눅스가 ACPI의 혜택을 받을 수 있을 것이라고 언급하며, 윈도우 전용으로 만들 것을 제안하기도 했다.[12][13][14]
2. 1. 초기 버전 (1996년 ~ 2009년)
ACPI 사양의 최초 판은 1996년 12월 출간되었으며, 16비트, 24비트 및 32비트 주소 공간을 지원했다.[57] 2000년 8월 ACPI는 리비전 2.0에 이르러 64비트 주소 지원뿐 아니라, 멀티프로세서 워크스테이션과 서버를 지원하게 되었다.2004년 9월 리비전 3.0이 출시되었으며, SATA 컨트롤러, PCI 익스프레스 버스, 256개 이상 프로세서의 멀티프로세서 지원, 광센서 및 사용자 감지 장치 지원, 그리고 이전의 프로세서 중심 지원을 넘어선 열 모델 확장이 이루어졌다.
2009년 6월 출시된 ACPI 사양 리비전 4.0은 USB 3.0 지원, 논리 프로세서 유휴 지원, x2APIC 지원 등 다양한 새로운 기능을 추가하였다.
2. 2. 발전 (2011년 ~ 현재)
2011년 12월, ACPI 사양 리비전 5.0이 출시되면서[15] ARM 아키텍처 지원이 추가되었다. 2014년 7월에는 리비전 5.1이 출시되었다.[16] 2019년 1월에는 ACPI 6.3 버전이,[57] 2022년 8월에는 최신 사양인 ACPI 6.5 버전이 출시되었다.[6] 2013년 10월부터 ACPI는 통합 EFI 포럼(Unified EFI Forum) 산하로 편입되었으며, 새로운 ACPI 사양은 UEFI 포럼에서 개발한다.3. 구성 요소
펌웨어 수준의 ACPI는 ACPI 테이블, ACPI BIOS, ACPI 레지스터의 세 가지 주요 구성 요소로 구성된다. ACPI BIOS는 ACPI 테이블을 생성하여 주 기억 장치에 로드한다. 펌웨어 ACPI 기능의 대부분은 ACPI 테이블에 저장된 튜링 완전 영역별 저수준 언어인 ''ACPI 머신 언어''(AML)의 바이트코드로 제공된다.[7] ACPI 테이블을 사용하려면 운영 체제에 AML 바이트코드에 대한 인터프리터가 있어야 한다. 참조 AML 인터프리터 구현은 ACPI 구성 요소 아키텍처(ACPICA)에서 제공한다. BIOS 개발 시점에 AML 바이트코드는 ASL(ACPI 소스 언어) 코드를 컴파일하여 생성된다.[11][8]
ACPI는 '''ACPI 하드웨어 레지스터''', '''ACPI BIOS''', '''ACPI 테이블''' 및 '''ACPI 머신 언어'''(AML)의 구성 요소를 가진다.
OSPM 호환 운영 체제가 ACPI를 활성화하면 전원 관리 및 장치 구성의 모든 측면에 대한 독점적인 제어 권한을 갖는다. OSPM 구현은 장치 드라이버에 ACPI 호환 환경을 노출해야 하며, 이는 특정 시스템, 장치 및 프로세서 상태를 노출한다.
ACPI는 전원 관리를 위한 프레임워크일 뿐만 아니라, 플랫폼의 구성 요소를 열거하고 관리하는 통일된 프레임워크이기도 하다. APM뿐만 아니라, 마더보드 상의 리소스를 열거하는 PnPBIOS, 멀티프로세서의 열거를 수행하는 MPTable 등도 통일된 형태로 대체한다. 이는 BIOS 주도의 관리 방식이었지만, ACPI는 운영 체제 주도의 관리를 실현하여, 시스템 전체의 전원 관리뿐만 아니라, 세밀한 장치의 전원까지 포함한 관리, 온도 관리나 대기 모드(서스펜드), 냉각 팬 제어 등 다양한 기능을 제공한다. 또한, 멀티프로세서나 16비트 코드를 호출하기 어려운 64비트 프로세서, CPU의 속도 제어도 가능하게 되었으며, 최근에는 노트북뿐만 아니라 데스크톱, 워크스테이션, 서버, 스마트폰, 태블릿 PC에도 사용되고 있다.
ACPI 규격 자체는 CPU 아키텍처에 의존하지 않기 때문에, ARM 아키텍처를 비롯한 비 x86/x64 계열 정보 단말기의 전원 및 하드웨어 리소스 관리에도 사용되고 있다.
불필요한 장치에 대한 전원 공급을 중지하거나, 사용하지 않을 때는 자동으로 대기 모드(서스펜드)를 하여 소비 전력을 억제할 수 있다. 이로 인해 노트북에서는 배터리의 지속 시간이 길어졌다.
구현의 복잡성과 운영 체제와의 경합으로 문제가 발생하기 쉬우므로, 최근에는 APM을 지원하지 않고 ACPI만 지원하는 BIOS가 증가하고 있다.
3. 1. ACPI 하드웨어 레지스터
ACPI 하드웨어 레지스터는 ACPI의 구성 요소 중 하나로, 운영체제가 시스템의 전원 상태, 이벤트, 제어 명령 등을 처리할 수 있도록 하는 하드웨어 인터페이스를 제공한다. ACPI 하드웨어 레지스터의 위치는 Fixed ACPI Control Pointer (FACP) 또는 Fixed ACPI Description Table (FADT)라고 불리는 ACPI 테이블에 기술되어 있다.3. 2. ACPI BIOS
ACPI BIOS는 ACPI 테이블을 초기화하고, 운영 체제(OS) 부팅 후에는 시스템 관리 모드를 통해 필요에 따라 동작한다. APM과는 달리, 전원 이벤트는 주로 운영 체제 측에서 보이는 인터럽트로 전달된다.[1] 메모리 맵 취득 BIOS 콜 Int 15H AX=E820H는 OS가 후술하는 ACPI 테이블을 의식하지 않고 덮어쓰지 않도록 하기 위해, ACPI 테이블 등을 포함하는 메모리를 OS에 통지할 필요가 있다.[1]3. 3. ACPI 테이블
ACPI 테이블은 메모리(RAM) 상에 위치하는 데이터 구조로, 시스템 초기화에 필요한 데이터를 확장 가능한 형태로 제공한다. RSDP (Root System Description Pointer)라는 16바이트 정렬된 구조체가 있으며, 이는 RSDT (Root System Description Table) 혹은 XSDT (eXtended System Description Table)라는 메모리 구조를 가리킨다. RSDT는 다양한 테이블에 대한 포인터를 포함하며, XSDT는 RSDT의 64비트 버전이다.[7]주요 ACPI 테이블은 다음과 같다:
| 테이블 | 설명 |
|---|---|
| RSDP (Root System Description Pointer) | RSDT 또는 XSDT를 가리킨다. |
| RSDT (Root System Description Table) | 다양한 테이블에 대한 포인터를 포함한다. |
| XSDT (eXtended System Description Table) | RSDT의 64비트 버전이다. |
| FADT (Fixed ACPI Description Table) | ACPI 하드웨어 레지스터 위치, FACS (Firmware ACPI Control Structure), DSDT (Differentiated System Description Table) 등 주요 정보를 담고 있다. |
| FACS (Firmware ACPI Control Structure) | BIOS와의 배타 제어 및 서스펜드 재개 시 BIOS와의 통신에 사용되는 메모리 위치를 나타낸다. |
| DSDT (Differentiated System Description Table) | AML(ACPI Machine Language)로 기술된 시스템상의 장치 등의 정보가 들어 있는 메모리 블록의 위치를 가리킨다. |
| SSDT (Secondary System Description Table) | DSDT를 보충하기 위해 사용되는 AML로 기술된 장치 등의 정보이다. |
| APIC (MADT, Multiple Apic Description Table) | 시스템에 있는 APIC의 정보를 기술한다. 하이퍼 스레딩을 지원하는 기계의 경우 반드시 존재한다. |
| ECDT (Embedded Controller Description Table) | 임베디드 컨트롤러 장치의 (사용 I/O 포트 등) 정보를 기술한다. |
| TCPA (Trusted Computing Platform Alliance Capability Table) | 트러스티드 컴퓨팅 그룹에 의해 정의된 메모리 테이블로, 부트 시퀀스의 타당성을 검증하기 위한 데이터에 대한 포인터를 포함한다. |
| MCFG (PCI Express memory mapped configuration space base address Description Table) | PCI Express의 액세스 메모리 공간의 위치, 버스 번호의 범위 등을 나타낸다. |
| SBST (Smart Battery Table) | |
| SRAT (System Resource Affinity Table) | |
| SLIT (System Locality Distance Information Table) | |
| SLIC (Software Licensing Description Table) |
DSDT의 해석은 오버헤드가 크므로, 부트 초기에 필요한 정보는 RSDT 혹은 XSDT의 다른 엔트리를 사용하여 기술하기도 한다.[7]
3. 4. ACPI 머신 언어 (AML)
ACPI 머신 언어(AML)는 플랫폼에 독립적인 중간 언어이며, ACPI 소스 언어(ASL)로부터 생성된다.[7] 운영체제는 AML 바이트코드에 대한 인터프리터를 통해 AML 코드를 해석하고 실행하여 ACPI 기능을 수행한다. 참조 AML 인터프리터 구현은 ACPI 구성 요소 아키텍처(ACPICA)에서 제공한다.[11][8] AML은 트리 구조의 네임스페이스나 서브루틴 호출 및 반복 등의 제어 구조를 가지며, 장치는 그 트리 구조의 네임스페이스 안에 있는 객체로 표현된다.3. 4. 1. ACPI 소스 언어 (ASL)
AML 바이트코드는 ASL(ACPI 소스 언어) 코드를 컴파일하여 생성된다.[11][8] ASL은 플랫폼에 독립적인 중간 언어이며, 운영체제가 이를 해석하여 고급 기능을 실현한다. ASL은 트리 구조의 네임스페이스나 서브루틴 호출 및 반복 등의 제어 구조를 가지며, 장치는 트리 구조의 네임스페이스 안에 있는 객체로 표현된다. 사용되는 식별용 ID나 사용 리소스의 기술에 사용되는 데이터 구조 등은 PnP BIOS의 특징을 계승하고 있다.3. 4. 2. ACPI 구성 요소 아키텍처 (ACPICA)
'''ACPI 구성 요소 아키텍처'''('''ACPICA''')는 주로 인텔의 엔지니어들이 작성했으며, 운영 체제와 관련된 ACPI 코드의 오픈 소스 플랫폼 독립적 참조 구현을 제공한다.[9] ACPICA 코드는 리눅스, Haiku, ArcaOS[10] 및 FreeBSD에서 사용되며, 각 운영 체제별 코드로 보완된다.[11]참조 AML 인터프리터 구현은 ACPICA에서 제공한다. BIOS 개발 시점에 AML 바이트코드는 ASL (ACPI 소스 언어) 코드를 컴파일하여 생성된다.[11][8]
4. 시스템 상태
ACPI는 시스템 절전 상태를 S0, S0ix, S1, S2, S3, S4, S5의 7가지로 정의한다. 깊은 절전 상태일수록 복귀 시간은 길어지지만, 대기 시 전력 소비는 적다. 유휴 시 프로세서의 절전 상태(Cx) 및 장치의 절전 상태(Dx)도 별도로 정의되어 있다.
- S0: 일반적인 운용 상태이다.
- S0ix: 모던 스탠바이 상태이다.[53]
- S1: 스탠바이라고 불리며, CPU는 메모리, 장치, 레지스터 및 캐시 컨텍스트를 유지한 채 인터럽트 등을 중지하고 저전력 상태로 전환된다.
- S2: S1과 유사하지만, 레지스터 및 캐시 컨텍스트가 손실되어 S3와 같은 방식으로 복귀해야 한다. (실제 구현 사례는 드물다.)
- S3: 절전 또는 Suspend to RAM이라고 불린다. 메모리는 유지되지만, 칩셋 정보 및 레지스터 컨텍스트가 손실된다. 복귀는 리셋 상태에서 시작되며, BIOS가 서스펜드 상태였음을 감지하여 초기화를 수행한 후 복귀 벡터로 이동한다.
- S4: 최대 절전 모드 또는 Suspend to Disk라고 불린다. 메모리 내용을 디스크에 기록하고 전원을 끄는 것과 같다. 복귀 시 부트로더나 OS가 최대 절전 모드 내용이 존재함을 감지하여 메모리 내용을 다시 기록한다.
- S5: 완전한 전원 차단 상태이다. 상용 전원 또는 무정전 전원 공급 장치에서 전력을 전혀 소비하지 않는다.
4. 1. 전역 상태 (Global States)
ACPI 규격은 ACPI 호환 컴퓨터 시스템에서 사용할 수 있는 몇 가지 전역 상태를 정의한다.[32][33] 주요 전역 상태는 다음과 같다.| Gx | 이름 | Sx | 설명 |
|---|---|---|---|
| G0 | 작동 | S0 | 컴퓨터가 실행 중이며 CPU가 명령을 실행한다. "Away 모드"는 S0의 하위 집합으로, 모니터는 꺼져 있지만 백그라운드 작업이 실행 중이다. |
| G1 | 절전 | S0ix | 모던 대기,[34] 또는 "저전력 S0 유휴". 프로세서 SoC 부분 절전.[35][36] 하위 상태에는 S0i1, S0i2 및 S0i3이 포함된다. ARM 및 x86 장치에서 알려져 있다. |
| S1 | 전원 켜짐 일시 중단 (POS): 프로세서 캐시가 플러시되고 전원이 꺼지며 CPU가 명령 실행을 중지한다. CPU 및 RAM에 대한 전원은 유지된다. 모니터 및 하드 디스크와 같은 주변 장치가 꺼질 수 있다. | ||
| S2 | CPU 전원 꺼짐. 더티 캐시가 RAM으로 플러시된다. | ||
| S3 | 일반적으로 대기, 절전 모드, 또는 RAM으로 일시 중단 (STR)이라고 한다. RAM에 전원이 계속 공급되며 RAM이 저전력 모드로 들어간다. 대부분의 주변 장치가 꺼진다. 팬은 일반적으로 꺼진다. Windows에서는 GPU 드라이버가 필요하다. | ||
| S4 | 최대 절전 모드 또는 디스크로 일시 중단: 메인 메모리의 모든 내용이 비휘발성 메모리 (예: 하드 드라이브)에 저장되고 시스템 전원이 꺼진다. | ||
| G2 | 소프트 오프 | S5 | 종료: 시스템 전원이 꺼진다. |
| G3 | 기계적 오프 | 컴퓨터의 전원이 기계식 스위치(예: PSU 후면)를 통해 완전히 제거되었다. 전원 코드를 제거할 수 있으며 시스템을 안전하게 분해할 수 있다(일반적으로, 실시간 시계만 자체 소형 배터리를 사용하여 계속 작동한다). |
4. 2. 장치 상태 (Device States)
장치 상태(Dx)는 개별 장치의 전력 상태를 나타낸다.[37] 주요 장치 상태는 다음과 같다:- D0: 완전히 켜져 있고 작동 중인 상태이다. 인텔 SoC에서는 중간 레벨을 위한 ''D0ix'' 상태도 있다.
- D1 및 D2: 중간 전력 상태로, 장치에 따라 정의가 다르다.
- D3: 장치가 꺼져 있고 버스에 응답하지 않는 상태이다. D3 상태는 다시 ''D3 핫''(보조 전원 공급)과 ''D3 콜드''(전원 미공급)로 나뉜다.
- ''핫'': 장치가 더 높은 전력 상태로 전환하기 위해 전력 관리 요청을 할 수 있다.
- ''콜드'': 장치가 꺼져 있고 버스에 응답하지 않는다.
4. 3. 프로세서 상태 (Processor States)
CPU 전원 상태는 다음과 같이 정의된다.- '''C0''': 작동 상태. CPU가 정상적으로 동작하며 모든 명령어를 실행한다.
- '''C1''' (정지): 프로세서가 명령을 실행하지 않지만, 거의 즉시 실행 상태로 돌아갈 수 있다. 펜티엄 4와 같은 일부 프로세서는 전력 소비를 줄이기 위한 향상된 C1 상태(C1E 또는 향상된 정지 상태)를 지원한다.[53]
- '''C2''' (스톱 클럭): 프로세서가 모든 소프트웨어에서 보이는 상태를 유지하지만, 깨어나는 데 시간이 더 오래 걸릴 수 있다.
- '''C3''' (절전): 프로세서가 캐시를 유지할 필요가 없지만, 다른 상태를 유지한다. 일부 프로세서는 프로세서를 깨우는 데 걸리는 시간에 따라 C3 상태(Deep Sleep, Deeper Sleep 등)의 변형을 가진다.
일부 프로세서는 제조업체에서 정의한 추가 상태를 가지기도 한다. 예를 들어, 인텔의 하스웰 플랫폼은 C10까지의 상태를 가지며, 여기서 코어 상태와 패키지 상태를 구분한다.[53]
4. 4. 성능 상태 (Performance States)
장치나 프로세서가 작동 중(각각 D0 및 C0)일 때, 여러 개의 전력 성능 상태 중 하나에 있을 수 있다. 이러한 상태는 구현에 따라 다르다. P0은 항상 최고 성능 상태이며, P1부터 Pn-1까지는 순차적으로 낮은 성능 상태이다. 상태의 총 개수는 장치 또는 프로세서에 따라 다르지만 16개를 넘을 수 없다.[41]P 상태는 인텔 프로세서에서는 스피드스텝, AMD 프로세서에서는 파워나우! 또는 쿨앤콰이어트, VIA 테크놀로지스 프로세서에서는 파워세이버로 알려져 있다.
5. 인터페이스
ACPI 호환 시스템은 하드웨어와 상호 작용하기 위해 "고정 기능 하드웨어(FFH) 인터페이스" 또는 OEM(Original Equipment Manufacturer, 원래 장비 제조업체)에서 제공하는 플랫폼별 ACPI 머신 언어(AML)에 의존하는 플랫폼 독립적 하드웨어 프로그래밍 모델을 사용한다.[43]
ACPI는 전원 관리뿐만 아니라 플랫폼 구성 요소를 열거하고 관리하는 통합 프레임워크이다. 마더보드 상의 리소스를 열거하는 PnPBIOS, 멀티프로세서 열거를 수행하는 MPTable 등을 대체한다. 기존의 BIOS 주도 관리 방식과 달리, ACPI는 운영 체제 주도 관리를 실현하여 시스템 전체 및 세밀한 장치 전원 관리, 온도 관리, 대기 모드(서스펜드), 냉각 팬 제어 등 다양한 기능을 제공한다. 또한 멀티프로세서, 16비트 코드 호출이 어려운 64비트 프로세서, CPU 속도 제어도 가능하게 되었다. 최근에는 노트북뿐만 아니라 데스크톱, 워크스테이션, 서버, 스마트폰, 태블릿 PC 등에서도 널리 사용되고 있다.
ACPI 규격은 CPU 아키텍처에 의존하지 않으므로, ARM 아키텍처를 비롯한 비 x86/x64 계열 정보 단말기의 전원 및 하드웨어 리소스 관리에도 사용된다. 불필요한 장치에 대한 전원 공급을 중지하거나 사용하지 않을 때 자동으로 대기 모드(서스펜드)로 전환하여 소비 전력을 줄일 수 있다. 이를 통해 노트북의 배터리 지속 시간이 크게 향상되었다.
구현 복잡성과 운영 체제와의 경합으로 인해 문제가 발생하기 쉬워, 최근에는 APM을 지원하지 않고 ACPI만 지원하는 BIOS가 증가하고 있다.
(하드웨어 인터페이스와 펌웨어 인터페이스에 대한 내용은 각각의 하위 섹션을 참조)
5. 1. 하드웨어 인터페이스
ACPI 호환 시스템은 "고정 기능 하드웨어(FFH) 인터페이스" 또는 원래 장비 제조업체(OEM)에서 제공하는 플랫폼별 ACPI 머신 언어(AML)에 의존하는 플랫폼 독립적 하드웨어 프로그래밍 모델을 통해 하드웨어와 상호 작용한다.[43]고정 기능 하드웨어 인터페이스는 성능 및 오류 복구를 위해 플랫폼 제조업체에서 제공하는 플랫폼별 기능이다. 표준 인텔 기반 PC는 인텔에서 정의한 고정 기능 인터페이스를 가지고 있으며,[43] 이는 ACPI 호환 시스템이 부팅 시간 또는 주요 시스템 오류 발생 시 기본적인 기능을 제공하기 위해 전체 드라이버 스택이 필요하지 않도록 하는 핵심 기능 집합을 제공한다.
ACPI 플랫폼 오류 인터페이스(APEI)는 운영 체제에 하드웨어 오류(예: 칩셋, RAM)를 보고하기 위한 사양이다.
5. 2. 펌웨어 인터페이스
ACPI는 운영 체제와 시스템 펌웨어(BIOS 또는 UEFI) 간의 인터페이스를 제공하는 여러 테이블을 정의한다.[44][45] 이러한 테이블을 통해 플랫폼 독립적인 방식으로 시스템 하드웨어를 설명할 수 있으며, 고정 형식의 데이터 구조 또는 AML(ACPI 머신 언어)로 제공된다. 주요 AML 테이블은 DSDT(차별화된 시스템 설명 테이블)이다.다음은 ACPI에서 정의하는 주요 테이블들이다.
| 테이블 이름 | 설명 |
|---|---|
| RSDP (루트 시스템 서술 포인터) | 플랫폼 종속적인 방식으로 위치하며 나머지 테이블을 설명한다. |
| RSDT (루트 시스템 서술 테이블) | 다양한 테이블에 대한 포인터를 포함한다. |
| DSDT (차별화된 시스템 서술 테이블) | 기본 시스템에 대한 구성 정보를 제공하는 주요 AML 테이블이다. |
| XSDT (확장 시스템 서술 테이블) | RSDT의 64비트 메모리 공간 대응 버전이다. |
| FADT (고정 ACPI 서술 테이블) | ACPI 하드웨어 레지스터의 위치, FACS(펌웨어 ACPI 제어 구조)의 위치, DSDT의 위치 등을 가리킨다. |
| FACS (펌웨어 ACPI 제어 구조) | BIOS와의 배타 제어 및 서스펜드 재개 시 BIOS와의 통신에 사용하는 메모리 위치를 나타낸다. |
| SBST (스마트 배터리 테이블) | 스마트 배터리 정보를 제공한다. |
| ECDT (임베디드 컨트롤러 시동 리소스 테이블) | 임베디드 컨트롤러 장치의 정보(사용 I/O 포트 등)를 기술한다. |
| MADT (다중 APIC 서술 테이블) | 시스템에 있는 APIC의 정보를 기술한다. 하이퍼 스레딩을 지원하는 시스템에서는 반드시 존재한다. |
| SRAT (시스템 리소스 어피니티 테이블) | 시스템 리소스 어피니티 정보를 제공한다. |
| SLIT (시스템 지역화 거리 정보 테이블) | 시스템 지역화 거리 정보를 제공한다. |
| SLIC (소프트웨어 허가 서술 테이블) | 소프트웨어 라이선스 정보를 제공한다. |
| SSDT (두 번째 시스템 서술자 테이블) | DSDT를 보충하기 위해 사용되는 AML로 기술된 장치 등의 정보를 담고 있다. |
펌웨어 ACPI 기능의 대부분은 ACPI 테이블에 저장된 튜링 완전 영역별 저수준 언어인 ''ACPI 머신 언어''(AML)의 바이트코드로 제공된다.[7] ACPI 테이블을 사용하려면 운영 체제에 AML 바이트코드에 대한 인터프리터가 있어야 한다. 참조 AML 인터프리터 구현은 ACPI 구성 요소 아키텍처(ACPICA)에서 제공한다. BIOS 개발 시점에 AML 바이트코드는 ASL(ACPI 소스 언어) 코드를 컴파일하여 생성된다.[11][8]
6. 운영 체제 지원
마이크로소프트의 윈도우 98은 ACPI를 구현한 최초의 운영 체제였지만,[17][18] 구현이 다소 버그가 있거나 불완전했다.[19][20] 초기 ACPI 하드웨어의 문제점도 있었다.[21] 이후 윈도우, macOS (x86 macOS), eComStation, ArcaOS,[22] FreeBSD (5.0부터[23]), NetBSD (1.6부터[24]), OpenBSD (3.8부터[25]), HP-UX, OpenVMS, 리눅스, GNU/Hurd, PC 버전 솔라리스 등도 ACPI를 일부 지원한다.[26] 윈도우 비스타 등 일부 최신 운영 체제는 ACPI 호환 BIOS를 요구하며, 윈도우 8부터는 S0ix/모던 대기 상태가 구현되었다.[27]
윈도우 운영 체제는 acpi.sys[28]를 통해 ACPI 이벤트에 접근한다.
리눅스 커널 2.4는 ACPI를 제한적으로 지원했고, 2.6.0부터 더 나은 지원이 제공(및 기본 활성화)되었다.[29] 오래된 ACPI BIOS 구현은 버그가 많아 이후 운영 체제에서 지원되지 않는 경우가 있다. 윈도우 2000, 윈도우 XP, 윈도우 서버 2003은 BIOS 날짜가 1999년 1월 1일 이후인 경우에만 ACPI를 사용하며,[30] 리눅스 커널 2.6도 BIOS 날짜가 2001년 1월 1일 이전이면 ACPI를 사용하지 않을 수 있다.[29]
리눅스 기반 운영 체제는 acpid[31]를 통해 ACPI 이벤트를 처리한다.
일반적으로 AT 호환기종 아키텍처 외에 AMD64 또는 IA-64 시스템에서 사용된다. IA-64 기반 운영체제에서는 ACPI 지원이 필수적이다. Windows는 Windows 98부터, 리눅스는 2.3.19 (개발 버전)부터, FreeBSD는 5-CURRENT부터 ACPI를 사용할 수 있게 되었지만, 모든 장치가 ACPI를 지원하지 않으면 문제가 발생할 수 있다. ACPI 3.0 규격서의 \_OSI 객체 설명에 따르면 IA-64 기반 HP-UX, OpenVMS에서도 지원된다.
리눅스, FreeBSD, NetBSD는 인텔이 개발 및 유지 보수하는 '''ACPI Component Architecture''' ('''ACPI-CA''')라는 커널 내 라이브러리를 사용하여 구현한다.
7. 비판
2003년 11월, 리눅스 커널의 저자 리누스 토르발스는 ACPI를 "모든 면에서 완전한 설계 재앙"이라고 묘사했다.[51][52]
참조
[1]
웹사이트
ACPI Overview
http://www.acpi.info[...]
[2]
웹사이트
APM BIOS Specification
http://download.micr[...]
Intel Corporation, Microsoft Corporation
2010-07-02
[3]
웹사이트
What is ACPI (Advanced Configuration and Power Interface)? - Definition from WhatIs.com
https://searchwindow[...]
2020-09-18
[4]
웹사이트
ACPI Device Tree - Representation of ACPI Namespace — The Linux Kernel documentation
https://www.kernel.o[...]
2020-09-18
[5]
웹사이트
The Advanced Configuration & Power Interface web page has a prominent note that links to the Preexisting ACPI Specifications page on the UEFI web site
http://www.acpi.info[...]
2016-01-25
[6]
웹사이트
Advanced Configuration and Power Interface Specification, Release 6.5
https://uefi.org/sit[...]
2022-10-04
[7]
웹사이트
ATARE: ACPI Tables and Regular Expressions
https://os.inf.tu-dr[...]
2019-02-18
[8]
문서
ACPI in Linux
https://www.kernel.o[...]
2005
[9]
문서
ACPICA: ACPI Component Architecture
http://www.acpica.or[...]
[10]
웹사이트
Readme for the ACPI Driver Package
https://www.arcanoae[...]
2020-09-06
[11]
문서
ACPI implementation on FreeBSD - Usenix
http://www.usenix.or[...]
[12]
웹사이트
Microsoft wollte ACPI nur für Windows
https://www.derstand[...]
2022-11-06
[13]
웹사이트
Microsoft: ACPI sollte nur unter Windows funktionieren
https://www.golem.de[...]
2022-11-06
[14]
웹사이트
ACPI extensions
http://www.iowaconsu[...]
1999-01-24
[15]
웹사이트
Advanced Configuration and Power Interface Specification (Revision 5.0)
http://acpi.info/DOW[...]
2013-11-17
[16]
웹사이트
Advanced Configuration and Power Interface Specification (Revision 5.1)
http://www.uefi.org/[...]
2015-05-24
[17]
웹사이트
Limitations When Using Microsoft Windows 98 on Compaq Armada Portables
ftp://ftp.physik.hu-[...]
physik.hu-berlin.de
2014-01-27
[18]
웹사이트
Windows 98 on ThinkPad systems - ThinkPad General
http://support.lenov[...]
Support.lenovo.com
2014-01-27
[19]
서적
Using Microsoft Windows 2000 Professional
https://archive.org/[...]
Que Publishing
2000
[20]
문서
Windows 98 Does Not Support ACPI Passive Cooling Mode
http://support.micro[...]
[21]
웹사이트
Cover Story: Win98 Bugs & Fixes - December 1998
http://winmag.com/li[...]
[22]
웹사이트
ArcaOS Changelog
https://www.arcanoae[...]
2020-08-24
[23]
웹사이트
FreeBSD 5.0-RELEASE Announcement
https://www.freebsd.[...]
2020-12-03
[24]
웹사이트
acpi(4) - NetBSD Manual Pages
https://man.netbsd.o[...]
2020-12-03
[25]
웹사이트
acpi(4) - OpenBSD manual pages
https://man.openbsd.[...]
2020-12-03
[26]
웹사이트
ACPI 2.0 Specification Technical Review, Intel Developer Forum
http://www.acpi.info[...]
Intel Corporation
2011-08-21
[27]
웹사이트
ACPI in Windows Vista
http://download.micr[...]
Microsoft Corporation
2010-07-02
[28]
웹사이트
Acpi.sys: The Windows ACPI Driver
https://docs.microso[...]
Microsoft Corporation
2019-09-20
[29]
문서
The State of ACPI in the Linux Kernel
https://www.kernel.o[...]
[30]
문서
ACPI BIOS
https://msdn.microso[...]
[31]
서적
Linux in a nutshell
https://www.worldcat[...]
O'Reilly
2005
[32]
문서
ACPI Spec Rev 5.0 - dated December 6, 2011
[33]
웹사이트
Intel's Haswell Architecture Analyzed
http://www.anandtech[...]
AnandTech
2013-10-20
[34]
웹사이트
Modern Standby
https://docs.microso[...]
2020-03-20
[35]
웹사이트
S0ix States
https://software.int[...]
2020-03-09
[36]
웹사이트
How to achieve S0ix states in Linux*
https://01.org/blogs[...]
2018-10-17
[37]
웹사이트
D0ix States
https://software.int[...]
2020-03-09
[38]
웹사이트
Athlon II X2: Hardware C1E and Return of the CnQ Bug
https://www.anandtec[...]
AnandTech
2020-10-26
[39]
웹사이트
Intel's Pentium 4 600 series processors
http://techreport.co[...]
The Tech Report
2005-02-21
[40]
웹사이트
Processor Package and Core C-States
http://images.anandt[...]
AnandTech
2013-10-20
[41]
웹사이트
Advanced Configuration and Power Interface Specification, Revision 3.0, Section 2.6 Device and Processor Performance State Definitions
http://www.acpi.info[...]
2015-08-19
[42]
문서
Link aggregation
[43]
웹사이트
Intel Processor Vendor-Specific ACPI
ftp://download.intel[...]
2014-10-05
[44]
간행물
ACPI in Linux
2005-07-20
[45]
웹사이트
ACPI Tables — The Linux Kernel documentation
https://www.kernel.o[...]
2020-11-08
[46]
웹사이트
DSDT
https://wiki.archlin[...]
[47]
웹사이트
Getting Started With ACPI
https://khronokernel[...]
[48]
웹사이트
Zombie Crapware: How the Windows Platform Binary Table Works
https://www.howtogee[...]
2015-08-19
[49]
웹사이트
Vendors 'rootkit': 'Windows Platform Binary Table' (WPBT)
https://borncity.com[...]
2017-12-06
[50]
웹사이트
Millions of Windows 10 PCs exposed by nasty security vulnerability
https://www.techrada[...]
2022-11-10
[51]
간행물
Linux Magazine
2014-05
[52]
웹사이트
Linus & the Lunatics, Part II
http://www.linuxjour[...]
Linux Journal
2010-01-13
[53]
웹사이트
モダン スタンバイ
https://docs.microso[...]
2020-03-20
[54]
웹사이트
マイクロソフトなど3社が、OSによる周辺機器の自動電源管理システム「ACPI」を発表
https://pc.watch.imp[...]
PC Watch
2012-08-21
[55]
웹인용
Advanced Configuration and Power Interface Specification (Revision 5.0)
http://acpi.info/DOW[...]
2013-11-17
[56]
웹인용
Advanced Configuration and Power Interface Specification (Revision 5.1)
http://www.uefi.org/[...]
2015-05-24
[57]
웹인용
Advanced Configuration and Power Interface Specification, Version 6.3
https://uefi.org/sit[...]
2016-07-31
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com