Low Pin Count

Bus **Low Pin Count** (**LPC**) là một bus máy tính được sử dụng trên các máy tính cá nhân tương thích IBM để kết nối các thiết bị băng thông thấp với CPU, chẳng hạn như ROM BIOS (ROM BIOS đã được chuyển sang bus Serial Peripheral Interface (SPI) vào năm 2006), các thiết bị I/O "di sản" (tích hợp vào chip Super I/O, Embedded Controller, CPLD, và/hoặc IPMI), và Trusted Platform Module (TPM). Các thiết bị I/O "di sản" thường bao gồm cổng nối tiếp và song song, bàn phím PS/2, chuột PS/2 và bộ điều khiển ổ đĩa mềm.

Hầu hết các bo mạch chủ PC có bus LPC đều có chip Platform Controller Hub (PCH) hoặc cầu nam đóng vai trò là máy chủ (host) và điều khiển bus LPC. Tất cả các thiết bị khác được kết nối với các dây vật lý của bus LPC là thiết bị ngoại vi.

## Tổng quan

Bus LPC được Intel giới thiệu vào năm 1998 như một giải pháp thay thế tương thích về mặt phần mềm cho bus Industry Standard Architecture (ISA). Nó giống với ISA đối với phần mềm, mặc dù về mặt vật lý thì nó khá khác biệt. Bus ISA có bus dữ liệu 16-bit và bus địa chỉ 24-bit có thể được sử dụng cho cả địa chỉ cổng I/O 16-bit và địa chỉ bộ nhớ 24-bit; cả hai đều chạy ở tốc độ lên tới 8,33&nbsp;MHz. Bus LPC sử dụng một bus rộng bốn bit được dồn kênh mạnh hoạt động ở tốc độ xung nhịp gấp bốn lần (33,3&nbsp;MHz) để truyền địa chỉ và dữ liệu với hiệu suất tương tự.

Ưu điểm chính của LPC là bus cơ bản chỉ yêu cầu bảy tín hiệu, giúp giảm đáng kể số lượng chân cắm cần thiết trên các chip ngoại vi. Một mạch tích hợp sử dụng LPC sẽ cần ít hơn từ 30 đến 72 chân so với mạch tương đương ISA. Điều này cũng giúp bus dễ dàng đi dây hơn trên các bo mạch chủ hiện đại đông đúc. Tốc độ xung nhịp được chọn để khớp với tốc độ của PCI nhằm tạo điều kiện thuận lợi hơn cho việc tích hợp. Ngoài ra, LPC được dự định là một bus chỉ dành cho bo mạch chủ; không có đầu nối tiêu chuẩn nào được sử dụng phổ biến, mặc dù Intel xác định một đầu nối để sử dụng cho các mô-đun gỡ lỗi. Một số ít các bo mạch con ngoại vi LPC có sẵn, với sơ đồ chân độc quyền của nhà sản xuất bo mạch chủ: Trusted Platform Modules (TPM), card POST để hiển thị mã chẩn đoán BIOS, và các thiết bị ngoại vi cổng nối tiếp tương thích ISA cho mục đích sử dụng công nghiệp. Việc khám phá thiết bị (device discovery) không được hỗ trợ; vì chỉ có các thiết bị bo mạch chủ hoặc các mẫu TPM cụ thể được kết nối, hình ảnh firmware máy chủ (BIOS, UEFI) sẽ bao gồm một mô tả tĩnh về bất kỳ thiết bị nào và địa chỉ I/O của chúng dự kiến sẽ có mặt trên một bo mạch chủ cụ thể.

### Tín hiệu
Các tín hiệu điều khiển LPC có mức thấp tích cực, được biểu thị bằng ký hiệu "#" trong tên của chúng. Các tín hiệu được chia thành ba loại:
* Đơn hướng. Các tín hiệu này luôn được điều khiển từ một nguồn duy nhất.
* Cực thu hở. Đây là các tín hiệu tốc độ thấp được kéo lên (về trạng thái không hoạt động) bởi máy chủ khi không sử dụng và có thể được kéo xuống bởi bất kỳ thiết bị nào.
* Song hướng. Các tín hiệu tốc độ cao này được chủ động điều khiển lên mức cao trong một chu kỳ bất khi nào một thiết bị sử dụng xong chúng, sau đó các điện trở kéo lên yếu sẽ giữ chúng ở mức cao cho đến khi một thiết bị khác bắt đầu sử dụng chúng.

Đặc tả LPC định nghĩa bảy tín hiệu bắt buộc cần thiết cho việc truyền dữ liệu song hướng:
* **LCLK** (đơn hướng, từ máy chủ): Xung nhịp 33,3&nbsp;MHz. Có thể được kết nối với xung nhịp PCI truyền thống (PCICLK), do đó không yêu cầu chân chuyên dụng trên máy chủ (cầu nam). Giống như PCI, các tín hiệu khác được điều khiển sau cạnh xuống của LCLK và được nhận sau cạnh lên.
* **LRESET#** (cực thu hở): Thiết lập lại bus mức thấp tích cực. Có thể được kết nối với PCIRST#.
* **LFRAME#** (đơn hướng, từ máy chủ): Tín hiệu mức thấp tích cực này cho biết bắt đầu một giao dịch bus LPC. Chỉ máy chủ mới có thể bắt đầu các giao dịch bus.
* **LAD[3:0]** (song hướng): Bốn tín hiệu song hướng này mang địa chỉ, dữ liệu và các thông tin khác được dồn kênh.

Có sáu tín hiệu bổ sung được định nghĩa, là tùy chọn cho các thiết bị LPC không yêu cầu chức năng của chúng, nhưng việc hỗ trợ hai tín hiệu đầu tiên là bắt buộc đối với máy chủ:
* **LDRQ#** (đơn hướng, từ thiết bị): Yêu cầu DMA/bus master. Đây là đầu ra từ một thiết bị muốn thực hiện truy cập bộ nhớ trực tiếp, thông qua bộ điều khiển DMA tương thích Intel 8237 hoặc giao thức bus master dành riêng cho LPC. Máy chủ phải cung cấp một chân đầu vào tương ứng cho mỗi thiết bị cần nó (tối thiểu là hai).
* **SERIRQ** (song hướng): Tín hiệu ngắt tương thích Intel 8259 được tuần tự hóa. Một đường dây được chia sẻ bởi tất cả các thiết bị LPC và máy chủ. Giống như các đường LAD, đường này có một điện trở kéo lên yếu để duy trì nó ở mức cao nếu không có thiết bị nào điều khiển nó.
* **CLKRUN#** (cực thu hở): Tín hiệu được sử dụng để khởi động lại xung nhịp trong các hệ thống có thể dừng xung nhịp để quản lý điện năng. Không bắt buộc nếu máy chủ không dừng xung nhịp. Có thể được kết nối với tín hiệu PCI tương đương.
* **LPME#** (cực thu hở): Sự kiện quản lý điện năng, để đánh thức hệ thống từ trạng thái ngủ. Tương đương với tín hiệu PME# của bus PCI.
* **LSMI#** (cực thu hở): Yêu cầu ngắt quản lý hệ thống. Điều này chỉ bắt buộc nếu một thiết bị LPC cần kích hoạt SMI# để phản hồi một truy cập bus (ví dụ: để thực hiện mô phỏng phần mềm cho một thiết bị ngoại vi phần cứng bị thiếu). Nếu không, giao thức SERIRQ chậm hơn có thể được sử dụng để yêu cầu một SMI.
* **LPCPD#** (đơn hướng, từ máy chủ): Đầu ra tùy chọn từ máy chủ để cảnh báo thiết bị LPC rằng nguồn sắp bị ngắt và nó không nên thực hiện bất kỳ yêu cầu ngắt hoặc DMA nào.

### Thời gian và hiệu suất
Bus LPC lấy các quy ước điện từ bus PCI truyền thống. Cụ thể, nó chia sẻ hạn chế rằng cần có hai chu kỳ không hoạt động để "đảo chiều" (turn around) bất kỳ tín hiệu bus nào để một thiết bị khác "nói". Trong chu kỳ đầu tiên, bus được chủ động điều khiển lên mức cao. Trong chu kỳ thứ hai, bus không được điều khiển và được giữ ở mức cao bởi các điện trở kéo lên. Một thiết bị mới có thể bắt đầu gửi dữ liệu qua bus vào chu kỳ thứ ba. Các hoạt động LPC dành một phần lớn thời gian để thực hiện các lần đảo chiều như vậy.

Như đã đề cập, bus LPC được thiết kế để có hiệu suất tương tự như bus ISA. Tốc độ truyền dữ liệu chính xác phụ thuộc vào loại truy cập bus (I/O, bộ nhớ, DMA, firmware) được thực hiện và tốc độ của máy chủ cũng như thiết bị LPC. Tất cả các chu kỳ bus dành phần lớn thời gian cho các chi phí vận hành (overhead) thay vì truyền dữ liệu—ngoại trừ các chu kỳ đọc firmware 16 và 128 byte, có 17 chu kỳ overhead nhưng có 32 và 256 chu kỳ (tương ứng) truyền dữ liệu, đạt được thông lượng là  và . Chu kỳ bus nhanh tiếp theo được định nghĩa trong tiêu chuẩn, chu kỳ ghi DMA kiểu ISA 32-bit, chỉ dành 8 trong số 20 chu kỳ xung nhịp để truyền dữ liệu (12 chu kỳ còn lại là overhead), đạt tốc độ lên tới 6,67&nbsp;MB/s.

Một trong những chu kỳ bus chậm nhất là đọc hoặc ghi bộ nhớ đơn giản, trong đó chỉ có 2 trong số 17 chu kỳ xung nhịp (cộng với bất kỳ trạng thái chờ nào do thiết bị áp đặt) truyền dữ liệu, đạt tốc độ truyền 1,96&nbsp;MB/s.

### Cấu trúc giao dịch
Các giao dịch LPC bắt đầu khi LFRAME# chuyển từ mức thấp sang mức cao. Trong khi LFRAME# ở mức thấp, máy chủ đặt một mã START 4-bit trên các đường LAD. Mã được gửi vào chu kỳ cuối cùng trước khi LFRAME# chuyển sang mức cao sẽ xác định giao dịch bus tiếp theo.

Thông thường, máy chủ chỉ giữ LFRAME# ở mức thấp trong một chu kỳ xung nhịp duy nhất để đạt hiệu quả. Một ngoại lệ là giao dịch hủy bỏ (abort transaction), có thể bắt đầu ngay cả ở giữa một hoạt động khác. Máy chủ kéo LFRAME# xuống thấp trong tối thiểu bốn chu kỳ xung nhịp, trong thời gian đó bất kỳ thiết bị nào cũng phải ngừng điều khiển bus LAD. Vào chu kỳ thứ tư, máy chủ điều khiển LAD lên mức cao (thành 1111). Khi LFRAME# chuyển từ mức cao xuống mức thấp, bus được thiết lập lại về trạng thái không hoạt động.

Trong hầu hết các trường hợp khác, các giao dịch LPC sử dụng cấu trúc chung sau:
* Mã START
* Loại giao dịch và địa chỉ từ máy chủ
* Dữ liệu từ máy chủ (nếu là lệnh ghi)
* Đảo chiều bus (2 chu kỳ)
* SYNC từ thiết bị (1 hoặc nhiều chu kỳ)
* Dữ liệu từ thiết bị (nếu là lệnh đọc)
* Đảo chiều bus (2 chu kỳ)

Các lần truyền DMA có đôi chút khác biệt.  có thể có nhiều giai đoạn SYNC và dữ liệu. § Bus master DMA có một lần đảo chiều bus ngay sau mã START và không có lần đảo chiều cuối cùng.

Giai đoạn SYNC cho phép thiết bị chèn các trạng thái chờ vào giao dịch. Có sáu giá trị SYNC khả thi, tất cả đều có tính chẵn lẻ (trọng số Hamming chẵn). Ba trong số đó kết thúc giai đoạn SYNC, trong khi ba giá trị còn lại khiến máy chủ đợi một nibble SYNC khác:
* 0000: Ready (Sẵn sàng). Thiết bị đã sẵn sàng tiến hành giao dịch. Đối với các chu kỳ DMA, điều này cũng xóa tín hiệu yêu cầu DMA (DREQ).
* 0011: *(không sử dụng)*
* 0101: Short wait (Chờ ngắn). Một chu kỳ SYNC khác sẽ theo sau. Cho phép tối đa 8 chu kỳ chờ ngắn.
* 0110: Long wait (Chờ dài). Giống như chờ ngắn, nhưng thời gian chờ có thể dài (ví dụ: các hoạt động Enhanced Parallel Port)
* 1001: Ready more (Sẵn sàng thêm). Một mã chỉ dành cho DMA báo hiệu "Sẵn sàng" *và* thiết bị yêu cầu thêm các chu kỳ DMA (DREQ vẫn được duy trì).
* 1010: Error (Lỗi). Thiết bị đã sẵn sàng tiến hành, nhưng có một số lỗi nghiêm trọng (như lỗi chẵn lẻ) với quá trình truyền. Điều này tương đương với các tín hiệu IOCHK# của bus ISA hoặc SERR# của bus PCI. Trong trường hợp đọc, dữ liệu sẽ theo sau nhưng có khả năng bị hỏng.
* 1100: *(không sử dụng)*
* 1111: Device not present (Thiết bị không tồn tại). Nếu không có thiết bị nào phản hồi giao dịch, máy chủ sẽ thấy mã này và có thể hủy bỏ giao dịch. Để phù hợp với các thiết bị chậm, cho phép tối đa 2 chu kỳ của mã này trước khi giao dịch bị hủy bỏ.

### Ứng dụng
Intel đã thiết kế bus LPC để hình ảnh BIOS hệ thống có thể được lưu trữ trong một chip bộ nhớ flash duy nhất kết nối trực tiếp với bus LPC. Intel cũng cho phép đặt các hình ảnh hệ điều hành và ứng dụng phần mềm trên một chip bộ nhớ flash duy nhất kết nối trực tiếp với bus LPC, như một giải pháp thay thế cho cổng Parallel ATA.

Một CPLD hoặc FPGA có thể triển khai một host hoặc thiết bị ngoại vi LPC.

Máy chơi game Xbox đời đầu có một cổng gỡ lỗi LPC có thể được sử dụng để buộc Xbox khởi động mã mới.

## Hoạt động tương thích ISA
Tất cả các giao dịch bus LPC tương thích ISA đều sử dụng mã START là 0000. Trong chu kỳ đầu tiên khi LFRAME# lên mức cao trở lại, máy chủ sẽ điều khiển một trường "loại chu kỳ/hướng" (CTDIR): hai bit cho biết loại (I/O, bộ nhớ hoặc DMA) và một bit cho biết hướng (đọc từ thiết bị hoặc ghi vào thiết bị) của lần truyền tiếp theo. Tiếp theo là trường địa chỉ truyền, kích thước của nó tùy thuộc vào loại chu kỳ:
* Đối với truy cập I/O, địa chỉ là 16 bit, được truyền nibble có nghĩa nhất trước qua 4 chu kỳ.
* Đối với truy cập bộ nhớ hệ thống, địa chỉ là 32 bit, được truyền nibble có nghĩa nhất trước qua 8 chu kỳ.
* Đối với các truy cập DMA tương thích ISA, không có địa chỉ *tự thân*, nhưng hai chu kỳ xung nhịp truyền một nibble chứa số kênh DMA và một nibble thứ hai cho kích thước truyền. Địa chỉ bộ nhớ được lập trình vào bộ điều khiển DMA kiểu ISA trong chipset hoặc CPU bên ngoài bus LPC. Xem  bên dưới.

### Đọc và ghi tương thích ISA
Truy cập bộ nhớ và I/O chỉ được phép dưới dạng truy cập một byte duy nhất và hoạt động như mô tả trong : địa chỉ, dữ liệu từ máy chủ nếu là lệnh ghi, đảo chiều, SYNC, dữ liệu từ thiết bị nếu là lệnh đọc.

Nếu máy chủ cố gắng truyền đến một địa chỉ không sử dụng, sẽ không có thiết bị nào điều khiển các chu kỳ SYNC và máy chủ sẽ thấy 1111 trên bus LAD. Sau khi thấy ba chu kỳ 1111 (cho phép hai chu kỳ, ngoài hai chu kỳ đảo chiều, để một thiết bị chậm giải mã địa chỉ và bắt đầu điều khiển các mẫu SYNC), máy chủ sẽ hủy bỏ hoạt động.

### DMA tương thích ISA
Chip Platform Controller Hub (PCH) hoặc chip cầu nam đóng vai trò là máy chủ và điều khiển bus LPC. Nó cũng đóng vai trò là bộ điều khiển DMA trung tâm cho các thiết bị trên bus đó nếu bộ điều khiển bộ nhớ nằm trong chipset. Trong các CPU chứa (các) bộ điều khiển bộ nhớ riêng, bộ điều khiển DMA nằm trong CPU. Để tương thích với phần mềm ban đầu được viết cho các hệ thống có bus ISA, bộ điều khiển DMA chứa các mạch tương đương với các thiết bị ngoại vi tích hợp "di sản" của kiến trúc IBM PC/AT, chẳng hạn như hai bộ điều khiển ngắt lập trình được, bộ định thời khoảng lập trình được và hai bộ điều khiển DMA ISA, tất cả đều tham gia vào "DMA kiểu ISA".

DMA tương thích ISA sử dụng bộ điều khiển DMA tương thích Intel 8237 trên máy chủ, bộ điều khiển này theo dõi vị trí và độ dài của bộ đệm bộ nhớ, cũng như hướng truyền. Thiết bị chỉ đơn giản yêu cầu dịch vụ từ một số kênh DMA nhất định và máy chủ thực hiện truy cập DMA trên bus LPC.

Yêu cầu được thực hiện bởi một đường yêu cầu DMA (DRQ) tương thích ISA ảo, được mô phỏng bằng tín hiệu LDRQ# của thiết bị để chỉ ra các chuyển đổi trên đường DRQ mô phỏng. Việc này được thực hiện với các yêu cầu 6-bit trên tín hiệu LDRQ#: một bit bắt đầu 0, số kênh DMA 3-bit (bit có nghĩa nhất trước), một bit cấp độ yêu cầu mới (hầu như luôn là 1, cho biết yêu cầu truyền DMA) và một bit dừng cuối cùng là 1. Máy chủ phản hồi bằng cách thực hiện một chu kỳ DMA vào cơ hội sớm nhất có thể. Các chu kỳ DMA được đặt tên dựa trên hướng truy cập *bộ nhớ*, vì vậy một lệnh "đọc" là truyền *đến* thiết bị LPC và một lệnh "ghi" là truyền *từ* thiết bị LPC.

"Địa chỉ" bao gồm 6 bit được gửi dưới dạng hai nibble: một số kênh 3-bit và một chỉ báo đếm cuối cùng (terminal count) 1-bit (chân TC của bus ISA hoặc đầu ra EOP# của 8237), tiếp theo là kích thước truyền 2-bit.

Theo mặc định, các kênh DMA 0–3 thực hiện truyền 8-bit và các kênh 5–7 thực hiện truyền 16-bit; nhưng một phần mở rộng dành riêng cho LPC cho phép truyền 1, 2 hoặc 4 byte trên bất kỳ kênh nào. Khi thực hiện truyền nhiều byte, mỗi byte có trường SYNC riêng, như được mô tả bên dưới.

Một mẫu SYNC "sẵn sàng" bình thường là 0000 (hoặc mẫu lỗi 1010) cũng làm mất hiệu lực tín hiệu yêu cầu DMA mô phỏng tương ứng; máy chủ sẽ dừng DMA sau byte ngay tiếp theo cho đến khi thiết bị đưa ra yêu cầu DMA khác thông qua tín hiệu LDRQ#. Mẫu SYNC 1001 cho biết máy chủ nên coi yêu cầu DMA của thiết bị vẫn đang hoạt động; máy chủ sẽ tiếp tục với bất kỳ byte còn lại nào trong lần truyền này hoặc bắt đầu một lần truyền khác, nếu phù hợp, mà không cần yêu cầu riêng biệt qua LDRQ#.

Đối với ghi DMA, nơi dữ liệu được truyền từ thiết bị, trường SYNC được theo sau bởi 8 bit dữ liệu và một trường SYNC khác, cho đến khi đạt đến độ dài do máy chủ chỉ định cho lần truyền này hoặc thiết bị dừng truyền. Trường đảo chiều hai chu kỳ hoàn tất giao dịch. Đối với đọc DMA, nơi dữ liệu được truyền đến thiết bị, trường SYNC được theo sau bởi một lần đảo chiều, và trình tự dữ liệu—đảo chiều—sync—đảo chiều lặp lại cho mỗi byte được truyền.

### Ngắt tuần tự hóa
Các ngắt được truyền qua một đường SERIRQ chia sẻ duy nhất bằng cách sử dụng giao thức "ngắt tuần tự hóa cho PCI" ban đầu được phát triển cho bus PCI. Máy chủ định kỳ gửi các gói ngắt, trong đó mỗi yêu cầu ngắt được chỉ định một khe thời gian 1 xung nhịp, cách nhau bởi các chu kỳ đảo chiều 2 xung nhịp. Việc đồng bộ hóa ban đầu được thực hiện bởi máy chủ. Ví dụ đơn giản hóa:
* Máy chủ điều khiển đường SERIRQ xuống thấp trong bốn đến tám xung nhịp, tiếp theo là chu kỳ đảo chiều 2 xung nhịp: SERIRQ được điều khiển lên cao trong 1 xung nhịp, sau đó thả nổi ở mức cao cho xung nhịp đảo chiều thứ hai.
* Nếu một thiết bị cần yêu cầu IRQ#6, nó đợi 6×3=18 xung nhịp, sau đó điều khiển SERIRQ xuống thấp trong một xung nhịp và lên cao cho một xung nhịp khác.

Các thiết bị có thể nhận ra sự khởi đầu của khung vì chỉ máy chủ mới điều khiển đường dây xuống thấp trong hơn một chu kỳ. Máy chủ xác định ngắt bằng cách đếm số chu kỳ xung nhịp: nếu nó thấy đường SERIRQ bị điều khiển xuống thấp ở xung nhịp thứ mười tám, thì IRQ 18/3=6 được xác nhận.

Số lượng khe ngắt tùy thuộc vào hệ thống, với 17 là một con số điển hình: 16 ngắt tương thích ISA (IRQ0–IRQ15), cộng với NMI.

Sau khe ngắt cuối cùng, máy chủ thêm một tín hiệu "dừng" bao gồm hai hoặc ba chu kỳ mức thấp, tiếp theo là hai chu kỳ đảo chiều.

Trong chế độ "liên tục" (continuous), máy chủ định kỳ bắt đầu một gói mới. Ngoài ra còn có chế độ "im lặng" (quiet), trong đó một thiết bị yêu cầu một gói mới bằng cách điều khiển SERIRQ xuống thấp trong một chu kỳ xung nhịp. Sau đó, máy chủ tiếp tục điều khiển đường dây xuống thấp trong bảy xung nhịp còn lại. Từ thời điểm này trở đi, giao thức vẫn như cũ.

Chế độ được điều khiển bởi độ dài tín hiệu dừng của máy chủ ở cuối mỗi gói. Nếu nó bao gồm ba xung nhịp tín hiệu thấp, chế độ liên tục sẽ theo sau và chỉ máy chủ mới có thể bắt đầu một gói mới. Nếu tín hiệu dừng bao gồm hai xung nhịp thấp, chế độ im lặng sẽ theo sau và bất kỳ thiết bị nào cũng có thể bắt đầu một gói ngắt.

## Các giao dịch LPC không phải ISA
Các giá trị trường START khác với 0000 hoặc 1111 được sử dụng để chỉ ra các lần truyền khác nhau không tương thích với ISA. Các lần truyền được hỗ trợ là:

### START = 1101, 1110: Đọc và ghi bộ nhớ firmware
Điều này cho phép firmware (BIOS) nằm bên ngoài không gian địa chỉ ngoại vi thông thường. Các lần truyền này tương tự như các lần truyền tương thích ISA, ngoại trừ:
* Không có trường CTDIR; hướng được mã hóa trong trường START (1101 để đọc, 1110 để ghi).
* 4 bit địa chỉ đầu tiên được định nghĩa là trường chọn thiết bị (IDSEL) để cho phép chọn một firmware hub trong số nhiều thiết bị. Ví dụ, một firmware hub thứ hai có thể được sử dụng để giữ một BIOS sao lưu trong trường hợp BIOS chính bị hỏng do phần mềm độc hại hoặc lỗi flash.
* 28 bit địa chỉ còn lại xác định địa chỉ trong thiết bị, nibble có nghĩa nhất trước.
* Địa chỉ được theo sau bởi một trường kích thước. Các kích thước đọc/ghi được hỗ trợ là 1, 2 và 4 byte. Các kích thước 16 và 128 byte chỉ được hỗ trợ để đọc.
* Dữ liệu được truyền trong một luồng liên tục (burst), không có trạng thái chờ. Chỉ có một trường SYNC cho toàn bộ lần truyền.

### START = 0010, 0011: Bus master DMA
Tối đa hai thiết bị trên bus LPC có thể yêu cầu truyền bus master bằng cách sử dụng tín hiệu LDRQ# để yêu cầu sử dụng kênh DMA 4 dự phòng. Trong trường hợp này, máy chủ sẽ bắt đầu truyền với một trường START đặc biệt là 0010 cho bus master 0 hoặc 0011 cho bus master 1, tiếp theo ngay sau đó là hai chu kỳ đảo chiều để bàn giao bus cho thiết bị yêu cầu chu kỳ bus master DMA. Sau các chu kỳ đảo chiều, quá trình truyền tiến hành rất giống với một lần truyền tương thích ISA do máy chủ khởi xướng nhưng với các vai trò bị đảo ngược:
* Thiết bị gửi trường CTDIR một chu kỳ (chỉ cho phép các loại truyền I/O và bộ nhớ).
* Thiết bị gửi một địa chỉ (16 hoặc 32 bit, tùy thuộc vào loại). Nó được truyền nibble có nghĩa nhất trước.
* Thiết bị gửi trường kích thước truyền một chu kỳ, mã hóa 8, 16 hoặc 32 bit.
* Trong trường hợp lệnh ghi, dữ liệu theo sau. Không giống như các chu kỳ DMA tương thích ISA, dữ liệu được truyền trong một luồng liên tục, không có thêm trạng thái chờ.
* Sau đó là hai chu kỳ đảo chiều trong khi bus LAD được bàn giao lại cho máy chủ.
* Một trường SYNC có độ dài thay đổi được chèn vào, dưới sự điều khiển của máy chủ.
* Trong trường hợp lệnh đọc, dữ liệu do máy chủ cung cấp theo sau.
Điều này khác với ISA bus mastering 16-bit vì LPC bus mastering yêu cầu địa chỉ bộ nhớ 32-bit khi thực hiện truyền bộ nhớ, không sử dụng kênh DMA kiểu ISA và có thể hỗ trợ truyền 8, 16 hoặc 32 bit; trong khi ISA bus mastering 16-bit yêu cầu địa chỉ bộ nhớ 24-bit khi thực hiện truyền bộ nhớ, yêu cầu sử dụng kênh DMA kiểu ISA và không thể thực hiện truyền 32-bit.

### START = 0101: Truy cập TPM Locality
Các đặc tả Trusted Platform Module 2.0 định nghĩa các chu kỳ TPM-Read và TPM-Write đặc biệt dựa trên các chu kỳ I/O Read và I/O Write. Các chu kỳ này sử dụng trường START với giá trị 0101 (trước đây được dự phòng), tiếp theo là một nibble CTDIR và địa chỉ I/O 16-bit giống như lệnh ghi tương thích ISA. Các chu kỳ này được sử dụng khi sử dụng tính năng locality của TPM.

## Các thiết bị ngoại vi được hỗ trợ
Đặc tả bus LPC giới hạn loại thiết bị ngoại vi nào có thể được kết nối với nó. Nó chỉ cho phép các thiết bị thuộc các lớp thiết bị sau: thiết bị siêu I/O (super I/O), bộ nhớ BIOS không biến đổi, firmware hub, thiết bị âm thanh và bộ điều khiển nhúng. Hơn nữa, mỗi lớp bị hạn chế về các chu kỳ bus được phép cho lớp đó.

Các thiết bị Super I/O và thiết bị âm thanh được phép chấp nhận các chu kỳ I/O, chấp nhận các chu kỳ DMA bên thứ ba kiểu ISA và tạo ra các chu kỳ bus master. Các thiết bị bộ nhớ ứng dụng chung như bộ nhớ BIOS không biến đổi và thiết bị flash LPC được phép chấp nhận các chu kỳ bộ nhớ. Các firmware hub được phép chấp nhận các chu kỳ bộ nhớ firmware. Các bộ điều khiển nhúng được phép chấp nhận các chu kỳ I/O và tạo ra các chu kỳ bus master. Một số chu kỳ ISA được coi là không hữu ích cho các lớp này đã bị loại bỏ. Chúng bao gồm các chu kỳ bộ nhớ hai byte do máy chủ khởi xướng và các chu kỳ I/O hai byte do máy chủ khởi xướng. Các loại truyền bị loại bỏ này có thể được máy chủ khởi xướng trên bus ISA nhưng không thể trên bus LPC. Máy chủ sẽ phải mô phỏng các chu kỳ hai byte bằng cách chia chúng thành hai chu kỳ một byte. Bus ISA có khái niệm tương tự vì bus ISA 8-bit ban đầu yêu cầu các chu kỳ 16-bit phải được chia nhỏ. Do đó, bus ISA 16-bit tự động chia các chu kỳ 16-bit thành các chu kỳ 8-bit vì lợi ích của các thiết bị ngoại vi ISA 8-bit trừ khi thiết bị ISA là mục tiêu của chu kỳ bộ nhớ hoặc I/O 16-bit xác nhận một tín hiệu cho bus biết rằng nó có thể chấp nhận lần truyền 16-bit được yêu cầu mà không cần sự hỗ trợ từ bộ chia chu kỳ ISA. ISA bus mastering đã được thay thế trong bus LPC bằng giao thức bus mastering hoàn toàn không dựa vào bộ điều khiển DMA kiểu ISA. Điều này được thực hiện nhằm loại bỏ giới hạn của ISA về loại chu kỳ bus master mà một thiết bị được phép khởi xướng trên kênh DMA nào. Các chu kỳ bus kiểu ISA được LPC kế thừa từ ISA là các chu kỳ bus I/O một byte do máy chủ khởi xướng, các chu kỳ bộ nhớ một byte do máy chủ khởi xướng và các chu kỳ DMA kiểu ISA một hoặc hai byte do máy chủ khởi xướng.

Tuy nhiên, một số chu kỳ bus không phải ISA đã được thêm vào. Các chu kỳ được thêm vào để cải thiện hiệu suất của các thiết bị bên cạnh firmware hub bao gồm các chu kỳ bộ nhớ bus master một, hai và bốn byte kiểu LPC; các chu kỳ I/O bus master một, hai và bốn byte; và DMA bên thứ ba 32-bit tuân thủ tất cả các hạn chế của DMA bên thứ ba kiểu ISA ngoại trừ thực tế là nó có thể thực hiện truyền 32-bit. Bất kỳ thiết bị nào được phép chấp nhận DMA kiểu ISA truyền thống cũng được phép sử dụng DMA kiểu ISA 32-bit này. Máy chủ có thể khởi xướng các chu kỳ DMA kiểu ISA 32-bit, trong khi các thiết bị ngoại vi có thể khởi xướng các chu kỳ bus master. Các firmware hub tiêu thụ các chu kỳ firmware được thiết kế dành riêng cho chúng để địa chỉ firmware và địa chỉ I/O ánh xạ bộ nhớ thông thường có thể chồng lấp mà không gây xung đột. Đọc bộ nhớ firmware có thể đọc 1, 2, 4, 16 hoặc 128 byte cùng lúc. Ghi bộ nhớ firmware có thể ghi một, hai hoặc bốn byte cùng lúc.

Bus LPC không hỗ trợ card mở rộng ISA.

## Xem thêm

* Danh sách tốc độ bit của giao diện
* Legacy Plug and Play
* Option ROM
* Serial Peripheral Interface
*  (eSPI), thế hệ kế tiếp của bus LPC.

## Tham khảo

## Liên kết ngoài
* Serialized IRQ Support For PCI Systems  được sử dụng bởi bus LPC
* Open-Source LPC Host and Peripheral Cores