顯示具有 BIOS 標籤的文章。 顯示所有文章
顯示具有 BIOS 標籤的文章。 顯示所有文章

2012年2月20日 星期一

BIOS相關名詞簡寫

Intel Graphics Driver(IGD)
Application Program Interface (API)
Boot Loader Development Kit (BLDK)
Configuration Editor (CED)
Detailed Timing Descriptor (DTD)
Driver Executable Environment (DXE)
EFI Byte Code (EBC)
Embedded Computing Group (Intel Corp.) (ECG)
Extended Display Identification Data (EDID)
Extensible Firmware Interface (EFI)
Embedded Pre-OS Graphics (EPOG)
GNU Compiler Collection (GCC)
Graphics Output Protocol (GOP)
General Purpose Input/Output (GPIO)
High-Definition Multimedia Interface (HDMI)
Intel® Embedded Graphics Drivers (IEGD)
Intel Graphics Driver (IGD)
In-Vehicle Infotainment (IVI)
Low Voltage Differential Signaling (LVDS)
PCI Express (PCIe)
Serial Digital Video Output. (SDVO)
POWERVR™ SGX Graphics Processing Unit (GPU) IP core (SGX)
Techtronix Logic Analyzer (TLA)
Universal Extensible Firmware Interface (UEFI)
Virtualization Technology (VT)
Intel 虛擬技術
embeded Multi Media Card (eMMC)
Understanding eMMC User Capacity
e·MMC v4.41 and v4.5
BIOS Modification Program (BMP)
video BIOS table (VBT)
Enhanced Host Controller Interface (EHCI)
Open Host Controller Interface (OHCI)
Universal Host Controller Interface (UHCI)
Trusted Platform Module (TPM)
Digital Temperature Sensor (DTS)
System Managment interrupt (SMI)
Windows Management Instrumentation (WMI)
System Control interrupt (SCI)
SCI v.s SMI 基本概念
EFI Firmware File system (FFS)
Flash Device (FD)
Firmware Volumes (FVs)
Image Signal Processer (ISP)
Platform Configuration Database (PCD)
USB On-The-Go (USB-OTG)
OTG規格簡介
Single Parallel Hub USB (SPH-USB)
System Management Interrupt (SMI)
System Control Interrupt (SCI)
SCI v.s SMI 基本概念
Secure Digital I/O (SDIO)
Secure Digital Memory Device (SD)
OEM Activation 3.0 (OA 3.0)
Platform Secure Storage (PSS)
Random Number Generator (RNG)
Customer Reference Board (CRB)
Dynamic Video Memory Technology (DVMT)
Form Factor Reference Design (FFRD)
Reference and Validation Platform (RVP)
Memory Reference Code (MRC)
Intel® eXtended Debug Port (XDP)
Flexible Flat Cable (FFC)
Flex Printed Circuit (FPC)
Dynamic Platform and Thermal Framework (DPTF)
Human Interface Device (HID)
Card Specific Data register (CSD)
Industry Standard Architecture (ISA)

Spec
External Design Specification (EDS)
INTEL Active Management Technology (AMT)

ACPI
Operating System-directed configuration and Power Management (OSPM)
Advanced Configuration and Power Interface (ACPI)
Differentiated System Description Table (DSDT)

2012年2月17日 星期五

如何分析SMBIOS

最在在porting新的function,有需要更新SMBIOS的資料,
因此,學會了如何簡單的分析SMBIOS。

SMBIOS有很多的type,每一個type分別有要特別存放的data,
同時,每一個type有其不同的struct,
這一些部分一定要參考spec,
spec有定義,
而我目前就先以SMBIOS type1為例。

如果要讀取BIOS的相關資訊,可以下載RW-Everything這一個軟體,
裡面有一個讀取SMBIOS的功能,並且會幫你解析出來,是一個非常棒的軟體,而且是免費的。

另外,SMBIOS,在網路上Search就有了,我使用的版本是System Management BIOS (SMBIOS) Reference Specification v.2.7.1的版本。

下面就是Specification裡面對type 1 header的定義。

而下面就是透過RW-Everything讀取出來的SMBIOS data


SMBIOS的每一個type分為header與string兩大部分,前面全部都是Header的部分,而後面的部分都是string的部分。而每一個string跟string之間,都是以00(一個byte)當作一個分隔。
並且以00 00(二個byte)則是代表這一個type的string的結束。

2010年7月9日 星期五

x86暫存器

EAX (Accumulator Register) (32 bit)
EBX (Base Register) (32 bit)
ECX (Count Register) (32 bit)
EDX (Data Register) (32 bit)
ESP (Stack Pointer) (32 bit)
EBP (Base Pointer) (32 bit)
ESI (Source Index) (32bit)
EDI (Destination Index) (32bit)
FS
GS
SS (Stack Segment) (16 bit)
DS (Data Segment) (16 bit)
ES (Extra Segment) (16 bit)
CS (Code Segment) (16 bit)
EIP (Instruction Pointer) (32 bit)

RAX (EAX 64 Bit Version) (64 bit)
RBX (EBX 64 Bit Version) (64 bit)
RCX (ECX 64 Bit Version) (64 bit)
RDX (EDX 64 Bit Version) (64 bit)
RSP (ESP 64 Bit Version) (64 bit)
RBP (EBP 64 Bit Version) (64 bit)
RSI (ESI 64 Bit Version) (64 bit)
RDI (EDI 64 Bit Version) (64 bit)
RIP (EIP 64 Bit Version) (64 bit)


Flag
Over flow Flag (OF) OV(1) NV(0)
Direction Flag (DF) DN(1) UP(0)
Interrupt Flag (IF) EI(1) DI(0)
Sign Flag (SF) NG(1) PL(0)
Zero Flag (ZF) ZR(1) NZ(0)
Auxiliary Flag (AF) AC(1) NA(0)
Parity Flag (PF) PE(1) PO(0)
Carry Flag (CF) CY(1) NC(0)


整理如下圖:


參考資料:
BIOS研發技術剖析
微算機原理與接口技術
64位元微處理器應用編程

2010年1月3日 星期日

"NUMA" 與 "NUMA node"

NUMA全名是Non-Uniform Memory Access 或 Non-Uniform Memory Architecture
由於處理器運算時需要使用記憶體,而處理器運算的速度又大於記憶體,因此整體速度會受到記憶體的限制。所以,如果處理器減少對記憶體存取的次數,可提供更快的執行效率。硬體製造商提供更快速的 L3 快取記憶體( Cache Memory ),可降低存取一般記憶體的次數,但這只是有限的解決方案。

另一方面,增加處理器的數目也是提升整體速度的方法。但在多處理器的情況下,會在記憶體這方面產生前一段所提及的問題,反而拖累整體速度。因為記憶體在同一時間只能讓一個處理器對它做存取動作,這意謂著其它處理器將處於等待的狀態,虛耗時間。 NUMA 架構對這個問題提供了可擴充的解決方案。利用 NUMA ,可以分割記憶體區塊,讓不同處理器可分別使用不同區塊的記憶體。這樣可以避免多處理器同時企圖存取同一區塊記憶體的問題,並改善這方面的速度。

然而,並非所有資料都使用在單一的運算任務(task)裡。多個處理器分工做同一件事,在運算執行過程及運算結束時,仍有可能對同一份資料做存取的動作。為解決這個問題,NUMA 可利用額外新增的軟硬體,將資料在不同的儲存處所之間來回搬動,並維持資料的一致性。不過這也會減慢一些速度。所以在利用 NUMA 提升整體速度這方面,也會受到運算任務的特徵 所影響。

NUMA node
由於處理器運算時脈不斷增快,因此在使用單一系統匯流排的情況下,要支援多處理器所需要的頻寬及其它潛在的需求變的更困難也更昂貴。於是在單一系統匯流排裡使用理想的處理器數目,可避免過多 CPU 產生效率上的浪費。大多數微軟視窗作業系統,在單一系統匯流排上支援四個處理器。

而這樣一個工作小組:一個系統匯流排、幾個處理器、一些記憶體,或一些I/O 次系統,可稱之為 node。硬體發展的趨勢是,高端伺服器可使用不只一個系統匯流排。如此一來,八個處理器就可分為二個 node 。

在這樣的架構下,在 Node 1 裡的CPU 若要存取 Node 2 裡的記憶體的資料,速度將會慢於存取同一個 node 裡的記憶體資料。由硬體製造廠商所組裝的超級電腦,常會提供專屬的連結界面來加大連結的頻寬,並降低存取遠端記憶體所產生的損耗,於是又產生了所謂的 ccNUMA 架構 - Cache coherent NUMA。

2009年11月6日 星期五

2009年10月24日 星期六

BIOS - PCI篇

在PCI Device有幾種定址方式Memory AddressI/O Address SpacesConfiguration Address Space

而在Configuration Space會有Configuration Space Header的格式,會有幾個基本的ID: Device IDVendor IDSubsystem IDSubsystem Vendor ID

而大部分的PCI的這四個ID都一定要填,除了,PCI Spec 3.0的Subsystem Vendor ID and Subsystem ID的這一個小節所提到的,「Implementation of these registers is required for all PCI devices except those that have a base class 6 with sub class 0-4 (0, 1, 2, 3, 4), or a base class 8 with sub class 0-3 (0, 1, 2, 3).」

除了base class為6且sub class為0-4或base class為8時且sub class為0-3,這一些的Subsystem ID與Subsystem Vendor ID可以不填之外,其它都要填!

而這個時候,要了解到base class與sub class的儲存的位置在哪裡?它就位於Configuration Space Header的Offset 09h起連續3個DWORD就是Class Code,而由低到高分別三個DWORD是「The upper byte (at offset 0Bh) is a base class code」「The middle byte (at offset 0Ah) is a sub-class code」「The lower byte (at offset 09h) identifies a specific register-level programming interface
另外一提的是,在PCI的最基本單位為1 DWORD = 2 bytes

而這一次出的作業就是把需要填Subsystem ID與Subsystem Vendor ID的所有PCI的七個資料列出來分別是Four ID:「Device ID」「Vendor ID」「Subsystem ID」「Subsystem Vendor ID」與Three number:「Bus number」「Device number」「Function number

[2010.04.13 補充]


要如何存取PCI哩~
有兩個存取方式
1. 透過Index I/O
2. 透過Memory Access

在0x40-0x255之後的位址,就是給PCI Device使用的區塊~所以,我們PCI spec也沒有辦法知道是如何使用那一些區域

參考資料:
封存檔:作業系統的 PCI ID 使用規格書
pci driver
在 PCI 匯流排列舉期間停止似乎 CEPC 乙太網路開機載入器
Class Code Table
PCI_LIB 3.0
UEFI 2_3
關於PCI的probing