Lågt antal stift
Lågt antal stift | |
År skapat | 1998 |
---|---|
Skapad av | Intel |
Ersätter | Industristandardarkitektur |
Ersatt av | Enhanced Serial Peripheral Interface Bus (2016) |
Bredd i bitar | 4 |
Fart | 33 MHz |
Stil | Parallell |
Hotplugging-gränssnitt | Nej |
Externt gränssnitt | Nej |
LPC -bussen ( Low Pin Count ) är en datorbuss som används på IBM-kompatibla persondatorer för att ansluta enheter med låg bandbredd till CPU:n , såsom BIOS ROM (BIOS ROM flyttades till Serial Peripheral Interface (SPI) bussen 2006 ), "legacy" I/O-enheter (integrerad i Super I/O , Embedded Controller eller IPMI- chip) och Trusted Platform Module (TPM). "Äldre" I/O-enheter inkluderar vanligtvis seriella och parallella portar, PS/2- tangentbord , PS/2- mus och diskettkontroller .
De flesta PC- moderkort med en LPC-buss har antingen en Platform Controller Hub (PCH) eller ett sydbrygg -chip, som fungerar som värd och styr LPC-bussen. Alla andra enheter som är anslutna till de fysiska ledningarna på LPC-bussen är kringutrustning.
Översikt
LPC-bussen introducerades av Intel 1998 som en mjukvarukompatibel ersättning för bussen Industry Standard Architecture (ISA). Det liknar ISA till mjukvara, även om det fysiskt är ganska annorlunda. ISA-bussen har en 16-bitars databuss och en 24-bitars adressbuss som kan användas för både 16-bitars I/O- portadresser och 24-bitars minnesadresser; båda körs i hastigheter upp till 8,33 MHz . LPC-bussen använder en kraftigt multiplexerad fyra-bitars bred buss som arbetar med fyra gånger klockhastigheten (33,3 MHz) för att överföra adresser och data med liknande prestanda.
LPC:s främsta fördel är att den grundläggande bussen endast kräver sju signaler, vilket kraftigt minskar antalet stift som krävs på perifera chips. En integrerad krets som använder LPC kommer att behöva 30 till 72 färre stift än sin ISA-motsvarighet. Det är också lättare att dirigera på moderna moderkort, som ofta är ganska trånga. Klockfrekvensen valdes för att matcha den för PCI för att ytterligare underlätta integrationen. Dessutom är LPC avsedd att vara en buss som endast är avsedd för moderkort. Ingen kontakt är definierad och inga LPC-perifera dotterkort är tillgängliga, förutom Trusted Platform Modules (TPM) med ett TPM-dotterkort vars pinout är proprietärt till moderkortsleverantören och POST-kort för visning av BIOS-diagnostikkoder. Enhetsupptäckt stöds inte; eftersom endast moderkortsenheter eller specifika modeller av TPM är anslutna, kommer värdfirmware-bilden (BIOS, UEFI ) att innehålla en statisk beskrivning av alla enheter och deras I/O-adresser som förväntas finnas på ett visst moderkort.
Signaler
LPC-specifikationen definierar sju obligatoriska signaler som krävs för dubbelriktad dataöverföring:
- LCLK : 33,3 MHz klocka, tillhandahållen av värden. Kan anslutas till den konventionella PCI -klockan (PCICLK), och kräver därmed inte ett dedikerat stift på värden (södra bryggan).
- LRESET# : Återställning av aktiv-låg buss. Kan anslutas till PCIRST#.
- LFRAME# : Denna aktiv-låg-signal indikerar början av en LPC-busstransaktion. Drivs endast av värden.
- LAD[3:0] : Dessa fyra dubbelriktade signaler bär multiplexerad adress, data och annan information. Liksom de tidigare två styrsignalerna har dessa signaler svaga pull-up-motstånd på sig, så de kommer att förbli i alla-ett-tillståndet om de inte aktivt drivs av en enhet.
Det finns sex ytterligare signaler definierade, som är valfria för LPC-enheter som inte kräver deras funktionalitet, men stöd för de två första är obligatoriskt för värden:
- LDRQ# : DMA/buss master begäran. Detta är en utgång från en enhet som vill utföra direkt minnesåtkomst, antingen via den Intel 8237- kompatibla DMA-kontrollern eller det LPC-specifika bussmasterprotokollet. Värden måste tillhandahålla ett motsvarande ingångsstift per enhet som behöver det (minst två).
- SERIRQ : Serialiserad Intel 8259- kompatibel avbrottssignal. En linje delas av alla LPC-enheter och värden.
- CLKRUN# : Öppen samlarsignal som används för att starta om klockan i system som kan stoppa den för strömhantering. Krävs inte om värden inte stoppar klockan. Kan anslutas till motsvarande PCI-signal.
- LPME# : Power Management-händelse med öppen kollektor, för att väcka systemet från ett viloläge. Motsvarar PCI-bussen PME#-signal.
- LPCPD# : Valfri utdata från värden för att varna LPC-enheten om att strömmen är på väg att tas bort och den bör inte göra några avbrott eller DMA-förfrågningar.
- LSMI# : Systemhanteringsavbrottsbegäran . Detta krävs endast om en LPC-enhet behöver trigga ett SMI# som svar på en bussåtkomst (t.ex. för att utföra mjukvaruemulering av en saknad hårdvaruutrustning). Annars kan det långsammare SERIRQ-protokollet användas för att begära ett SMI.
Timing och prestanda
LPC - bussen härleder sina elektriska konventioner från konventionella PCI . I synnerhet delar den begränsningen att två tomgångscykler krävs för att "vända" en busssignal så att en annan enhet "talar". I den första körs bussen aktivt högt. I den andra är bussen odriven och hålls högt av pull-up-motstånden. En ny enhet kan börja skicka data över bussen under den tredje cykeln. LPC-operationer lägger en stor del av sin tid på att utföra sådana vändningar.
Som nämnts är LPC-bussen designad för att ha prestanda liknande ISA-bussen. De exakta dataöverföringshastigheterna beror på typen av bussåtkomst (I/O, minne, DMA , firmware ) som utförs och på värdens och LPC-enhetens hastighet. Alla busscykler utom läscykeln för 128-byte firmware, där 256 av de 273 klocktickar som förbrukas av denna cykel faktiskt används för att överföra data för att få en genomströmning på 15,63 MB/s, spenderar en majoritet av sin tid i overhead snarare än dataöverföring. Den näst snabbaste busscykeln, den 32-bitars ISA-liknande DMA-skrivcykeln som definieras i denna standard, kan överföra upp till 6,67 MB/s eftersom endast 8 av 20 klocktickar som används i denna busscykel faktiskt överför data medan resten av cyklerna är overhead.
En av de långsammaste busscyklerna är en enkel minnesläsning eller skrivning, där endast 2 av de 17 klockan tickar (plus eventuella väntelägen som påtvingas av enheten) överför data, för en överföringshastighet på 1,96 MB/s.
Ansökningar
Intel konstruerade LPC-bussen så att system-BIOS-bilden kunde lagras i ett enda flashminneschip direkt kopplat till LPC-bussen. Intel gjorde det också möjligt att placera operativsystembilder och mjukvaruapplikationer på ett enda flashminneschip direkt kopplat till LPC-bussen, som ett alternativ till en parallell ATA- port.
En CPLD eller FPGA kan implementera en LPC-värd eller kringutrustning.
Den ursprungliga Xbox-spelkonsolen har en LPC- felsökningsport som kan användas för att tvinga Xbox att starta upp ny kod.
ISA-kompatibel drift
Alla LPC-busstransaktioner initieras av värden som kortvarigt kör LFRAME# lågt, under åtminstone en cykel. Under den sista cykeln med LFRAME# låg (refererad till som START-fältet), kör värden LAD[3:0] till nollor för att indikera att en ISA-kompatibel transaktion kommer att följa. Under den första cykeln med LFRAME# hög igen, kör värden ett "cykeltyp/riktning" (CTDIR)-fält: tre bitar som indikerar typ (I/O, minne eller DMA) och riktning (läs från enhet eller skriv till enhet) för överföringen som följer. Detta följs vanligtvis av överföringsadressfältet. Adressens storlek beror på typen av cykel:
- För I/O-åtkomst är adressen 16 bitar, överförd mest betydande nibble först under 4 cykler.
- För systemminnesåtkomst är adressen 32 bitar, överförd mest signifikanta napp först under 8 cykler.
- ISA-liknande DMA-accesser har inte en adress i sig , men två klockcykler överför en nibble som innehåller DMA-kanalnumret och en andra nibble som ger överföringsstorleken. Minnesadressen är programmerad i DMA-styrenheten i ISA-stil i styrkretsen eller CPU:n utanför LPC-bussen. Se avsnittet om DMA nedan.
ISA-kompatibel läser och skriver
Minnes- och I/O-åtkomster är endast tillåtna som enkelbyte-åtkomster.
För en skrivning följs den ovan beskrivna adressen av datafältet, 8 bitar överförda med den minst signifikanta biten först under två cykler.
Efter detta vänder värden bussen till enheten. Denna vändning tar två cykler och fungerar på samma sätt som de konventionella PCI-bussstyrsignalerna: under en cykel driver värden LAD-linjerna högt (1111). Under den andra cykeln upphör värden att driva ledningarna, även om de förblir höga på grund av uppdragningsmotstånden. Anordningen kan driva linjerna från och med den tredje cykeln.
Efter varje vändning till enheten är minst en SYNC-cykel. Antalet är variabelt, under kontroll av enheten för att lägga till så många väntelägen som den behöver. Bitmönstren 0101 och 0110 indikerar att synkroniseringscyklerna kommer att fortsätta. Väntan slutar när enheten kör ett mönster på 0000 (klar) eller 1010 (fel) på LAD-bussen under en cykel.
I fallet med läsningar följs detta av 8 bitar data, överförd minst signifikanta nibble först under två cykler, samma som för en skrivning.
Enheten vänder sedan bussen till värden igen (tar ytterligare två cykler), och överföringen är klar; värden kan skicka START-fältet för en annan överföring vid nästa cykel.
Om värden försöker en överföring till en oanvänd adress kommer ingen enhet att driva SYNC-cyklerna och värden kommer att se 1111 på LAD-bussen. Efter att ha sett tre cykler av 1111 (två cykler är tillåtna, förutom de två vändningscyklerna, för en långsam enhet att avkoda adressen och börja köra SYNC-mönster), kommer värden att avbryta operationen.
ISA-kompatibel DMA
Platform Controller Hub (PCH)-chippet eller southbridge -chippet fungerar som värd och styr LPC-bussen. Den fungerar också som den centrala DMA-styrenheten för enheter på den bussen om minnesstyrenheten finns i chipsetet. I CPU:er som innehåller sina egna minneskontroller, är DMA-kontrollern placerad i CPU:n. För kompatibilitet med programvara som ursprungligen skrivits för system med ISA-bussen innehåller DMA-styrenheten kretsekvivalenter till "legacy" inbyggd kringutrustning av IBM PC/ AT- arkitekturen, såsom de två programmerbara avbrottskontrollerna , den programmerbara intervalltimern och två ISA DMA-kontroller , som alla är involverade i " ISA-stil DMA ".
ISA-kompatibel DMA använder en Intel 8237-kompatibel DMA-kontroller på värden, som håller reda på platsen och längden på minnesbufferten, samt riktningen för överföringen. Enheten begär helt enkelt service från ett givet DMA-kanalnummer, och värden utför en DMA-åtkomst på LPC-bussen.
DMA-förfrågningar görs med hjälp av enhetens LDRQ#-signal. Normalt hög kan en enhet indikera en övergång på en ISA-kompatibel DRQ-linje genom att skicka en 6-bitars begäran: en 0-startbit, 3-bitars DMA-kanalnumret (den mest signifikanta biten först), en bit av ny begärannivå ( nästan alltid 1, vilket indikerar att en DMA-överföring begärs), och en sista 1 stoppbit. Värden utför sedan en DMA-cykel. DMA-cykler är namngivna baserat på minnesåtkomsten, så en "läs" är en överföring från minnet till enheten och en "skriv" är en överföring från enheten till minnet.
"Adressen" består av två cykler: ett 3-bitars kanalnummer och 1-bitars terminalräkningsindikation (ISA-bussens TC-stift eller 8237:ans EOP#-utgång), följt av en 2-bitars överföringsstorlek.
Som standard utför DMA-kanalerna 0–3 8-bitarsöverföringar och kanal 5–7 utför 16-bitarsöverföringar; men en LPC-specifik förlängning tillåter 1-, 2- eller 4-byte överföringar på vilken kanal som helst. När en multi-byte-överföring utförs har varje byte sitt eget SYNC-fält, som beskrivs nedan. DMA-överföringar tillåter ett extra SYNC-fältvärde: ett mönster på 1001 indikerar att enheten är redo med den aktuella byten och även vill överföra fler byte. Standardmönstret "klar" på 0000 indikerar att detta är den sista byten.
Ett normalt SYNC "ready"-mönster på 0000 (eller ett felmönster på 1010) begär att värden stoppar DMA efter den omedelbart följande byten tills enheten gör en annan DMA-begäran via LDRQ#-signalen. Ett mönster av 1001 indikerar att värden bör anse att enhetens DMA-begäran fortfarande är aktiv; värden kommer att fortsätta med eventuella återstående byte i denna överföring eller starta en annan överföring, om så är lämpligt, utan en separat begäran via LDRQ#.
För en DMA-skrivning, där data överförs från enheten, följs SYNC-fältet av de 8 databitarna och ett annat SYNC-fält, tills den värdspecificerade längden för denna överföring nås, eller så stoppar enheten överföringen. Ett två-cykels turnaround-fält slutför transaktionen. För en DMA-läsning, där data överförs till enheten, följs SYNC-fältet av en vändning, och data-turnround-sync-turnroundsekvensen upprepas för varje byte som överförs.
Serialiserade avbrott
Serialiserade avbrott sänds över en enda delad SERIRQ-linje med hjälp av klockan. En tidslucka är dedikerad till varje avbrottsbegäran, där den initiala synkroniseringen görs av värden. Som ett förenklat exempel:
- Värden kör SERIRQ-linjen lågt i åtta klockor, sedan högt för en annan, och låter bussen flyta för en sista vändningscykel.
- Om en enhet behöver begära IRQ#6, väntar den på 6×3=18 klockor och kör sedan SERIRQ lågt för en klocka och högt för en annan.
Enheterna kan synkronisera vid det första steget eftersom linjen endast kan köras lågt under två eller flera på varandra följande klockor av värden: ingen annan enhet driver den lågt under mer än en klocka. Värden känner igen källorna till avbrotten genom att titta på linjen medan den räknar antalet klockor: om den ser att SERIRQ-linjen körs lågt vid den artonde klockan, så hävdas IRQ 18/3=6.
Ovanstående är det kontinuerliga läget, där värden initierar protokollet. I tyst läge begär en enhet avbrott genom att köra SERIRQ lågt för en klocka. Värden fortsätter sedan att köra linjen lågt för de andra sju klockorna. Från och med denna punkt är protokollet detsamma. I båda moderna kan antalet klockor för den initiala synkroniseringspulsen variera från fyra till åtta.
I början fungerar protokollet i kontinuerligt läge. I slutet av varje komplett busstransaktion (efter att värden har kört SERIRQ lågt och sedan väntat på att alla enheter ska skicka avbrottsbegäranden) skickar värden ett sista meddelande: den driver SERIRQ-linjen lågt i två eller tre klockor beroende på vilket läge som kommer att användas i nästa transaktion.
Fördelen med att använda serialiserade avbrott jämfört med den traditionella mekanismen är att endast den enda SERIRQ-linjen är nödvändig (förutom klockan, som ändå finns), inte en linje för varje avbrottsnivå.
LPC icke-ISA-cykler
Andra START-fältvärden än 0000 används för att indikera olika icke-ISA-kompatibla överföringar. De överföringar som stöds är:
- START = 1101, 1110
- Firmware minne läsa och skriva
- Detta gör att den fasta programvaran (BIOS) kan placeras utanför det vanliga perifera adressutrymmet. Dessa överföringar liknar ISA-kompatibla överföringar, förutom att:
- Det finns inget CTDIR-fält; riktningen kodas i START-fältet (1101 för läsning, 1110 för skriv).
- Ett chipvalfält på 4 bitar finns för att tillåta valet av en firmware-hub av många. Till exempel kan en andra firmware-hubb användas för att hålla ett backup-BIOS om det primära BIOS är skadat av skadlig programvara eller en dålig flash.
- Adressen är 28 bitar. Det överförs mest betydande nibble först.
- Adressen följs av ett storleksfält. Läs-/skrivstorlekar som stöds är 1, 2 och 4 byte. Stödda skrivskyddade storlekar är 16 eller 128 byte.
- Data överförs i en kontinuerlig skur, utan väntelägen. Det finns bara ett SYNC-fält för hela överföringen.
- START = 0010, 0011
- Bussmaster DMA
- Upp till två enheter på en LPC-buss kan begära en bussmasteröverföring genom att använda LDRQ#-signalen för att begära användning av den reserverade DMA-kanalen 4. I detta fall kommer värden att påbörja en överföring med ett speciellt START-fält på 0010 för bussmaster 0 eller 0011 för bussmaster 1, omedelbart följt av två vändningscykler för att lämna bussen till enheten som begär bussmaster-DMA-cykeln. Efter vändningscyklerna fortskrider överföringen ungefär som en värdinitierad ISA-kompatibel överföring med rollerna omvända:
- Enheten skickar ett CTDIR-fält i en cykel (endast I/O- och minnesöverföringstyper är tillåtna).
- Enheten skickar en adress (16 eller 32 bitar, beroende på typ). Det överförs mest betydande nibble först.
- Enheten skickar ett en-cykels överföringsstorleksfält som kodar 8, 16 eller 32 bitar.
- Vid en skrivning följer data. Till skillnad från ISA-kompatibla DMA-cykler överförs data i en skur, utan fler väntelägen.
- Sedan kommer två vändningscykler medan LAD-bussen lämnas tillbaka till värden.
- Ett SYNC-fält med variabel längd infogas under kontroll av värden.
- Vid en läsning följer data som tillhandahålls av värden.
- Detta skiljer sig från 16-bitars ISA-busmastering eftersom LPC-busmastering kräver en 32-bitars minnesadress när en minnesöverföring utförs, inte använder en ISA-liknande DMA-kanal och kan stödja 8, 16 eller 32-bitars överföringar; medan 16-bitars ISA-bussmastering kräver en 24-bitars minnesadress när man utför en minnesöverföring, kräver användning av en ISA-liknande DMA-kanal och kan inte utföra 32-bitars överföringar.
- START = 1111
- Transaktion avbryt
- När som helst, även om det vanligtvis är som svar på ett fel av enheten under ett SYNC-fält, kan värden avbryta den aktuella transaktionen genom att köra LFRAME# lågt utan att vänta på att den aktuella transaktionen ska avslutas. Den måste hålla den låg i minst 4 cykler, sedan returnera den hög med ett speciellt START-fältvärde på 1111. Detta utför en mjuk återställning av LPC-bussen och lämnar bussen tomgång tills nästa överföring påbörjas genom att köra LFRAME# låg igen .
- START = 0101
- TPM-lokalitetsåtkomst
- De senaste specifikationer för Trusted Platform Module definierar speciella TPM-läscykler och TPM-skrivcykler som är baserade på I/O-läs- och I/O-skrivcyklerna. Dessa cykler använder ett START-fält med det tidigare reserverade värdet 0101 och placerar en 16-bitars minnesadressförskjutning i adressfältet. Dessa cykler används när man använder en TPM:s lokalitetsanläggning.
Kringutrustning som stöds
LPC-bussspecifikationen begränsar vilken typ av kringutrustning som kan anslutas till den. Den tillåter endast enheter som tillhör följande klasser av enheter: super I/O-enheter, icke-flyktigt BIOS-minne , firmware-hubbar och inbyggda kontroller. Dessutom är varje klass begränsad på vilka busscykler som är tillåtna för varje klass.
Super I/O-enheter och ljudenheter tillåts acceptera I/O-cykler, acceptera ISA-liknande DMA-cykler från tredje part och generera bussmastercykler. Generiska applikationsminnesenheter som icke-flyktigt BIOS-minne och LPC-flashenheter tillåts acceptera minnescykler. Firmware-hubbar tillåts acceptera firmware-minnescykler. Inbyggda styrenheter tillåts acceptera I/O-cykler och generera bussmastercykler. Vissa ISA-cykler som ansågs inte användbara för dessa klasser togs bort. De inkluderar värdinitierade tvåbyte minnescykler och värdinitierade tvåbyte I/O-cykler. Dessa borttagna överföringstyper skulle kunna initieras av värden på ISA-bussar men inte på LPC-bussar. Värden skulle behöva simulera två-byte-cykler genom att dela upp dem i två en-byte-cykler. ISA-bussen har ett liknande koncept eftersom den ursprungliga 8-bitars ISA-bussen krävde att 16-bitars cykler skulle delas upp. Därför delar 16-bitars ISA-bussen automatiskt upp 16-bitars cykler i 8-bitars cykler till förmån för 8-bitars ISA kringutrustning såvida inte ISA-enheten som riktas mot ett 16-bitars minne eller I/O-cykel hävdade en signal som berättade bussen att den kunde acceptera den begärda 16-bitarsöverföringen utan hjälp från en ISA-cykeldelare. Busmastering av ISA-stil har ersatts i LPC-bussen med ett busmasteringsprotokoll som inte alls förlitar sig på DMA-styrenheter av ISA-stil. Detta gjordes för att ta bort ISA:s gräns för vilken typ av bussmastercykler en enhet får initiera på vilken DMA-kanal. Busscyklerna av ISA-stil som ärvdes av LPC från ISA är en-byte värdinitierade I/O-busscykler, en-byte värdinitierade minnescykler och en- eller tvåbyte värdinitierade ISA-typ DMA-cykler .
Några icke-ISA-busscykler lades dock till. Cykler som lades till för att förbättra prestanda för enheter vid sidan av firmware-hubbar inkluderar LPC-liknande en-, två- och fyrabyte-bussmasterminnescykler; en-, två- och fyra-byte bussmaster I/O-cykler; och 32-bitars tredjeparts-DMA som överensstämmer med alla begränsningar av ISA-liknande tredjeparts-DMA förutom det faktum att den kan göra 32-bitarsöverföringar. Alla enheter som tillåts acceptera traditionell ISA-stil DMA får också använda denna 32-bitars ISA-stil DMA. Värden kunde initiera 32-bitars ISA-liknande DMA-cykler, medan kringutrustning kunde initiera bussmastercykler. Firmware-hubbar förbrukade firmware-cykler som var designade bara för firmware-hubbar så att firmware-adresser och normala minnesmappade I/O-adresser kunde överlappa varandra utan konflikt. Firmware-minnesläsningar kan läsa 1, 2, 4, 16 eller 128 byte på en gång. Firmware-minnesskrivningar kan skriva en, två eller fyra byte samtidigt.
Se även
- Lista över gränssnittsbithastigheter
- Legacy Plug and Play
- Alternativ ROM
- Seriellt perifert gränssnitt
- Serial Peripheral Interface Bus § Intel Enhanced Serial Peripheral Interface Bus (eSPI), efterföljaren till LPC-bussen.
externa länkar
- Serialiserat IRQ-stöd för PCI-system som används av LPC-bussen
- LPC-värd och perifera kärnor med öppen källkod