# Intel QuickPath Interconnect

L'Intel QuickPath Interconnect (QPI) és una interconnexió de processador punt a punt desenvolupada per Intel que va substituir el bus frontal (FSB) a Xeon, Itanium i certes plataformes d'escriptori a partir del 2008. Va augmentar l'escalabilitat i l'ample de banda disponible. Abans de l'anunci del nom, Intel s'hi referia com a Common System Interface (CSI). Les encarnacions anteriors eren conegudes com Yet Another Protocol (YAP) i YAP+.
QPI 1.1 és una versió significativament renovada introduïda amb Sandy Bridge-EP (plataforma Romley).
QPI va ser substituït per Intel Ultra Path Interconnect (UPI) als processadors Skylake -SP Xeon basats en el sòcol LGA 3647.

## Rerefons

Encara que de vegades s'anomena "autobús", QPI és una interconnexió punt a punt. Va ser dissenyat per competir amb HyperTransport que havia estat utilitzat per Advanced Micro Devices (AMD) des de l'any 2003. Intel va desenvolupar QPI al seu Massachusetts Microprocessor Design Center (MMDC) per membres del que havia estat l'Alpha Development Group, que Intel havia adquirit a Compaq i HP i, al seu torn, originàriament provenia de Digital Equipment Corporation (DEC). El seu desenvolupament s'havia informat ja l'any 2004.
Intel el va lliurar per primera vegada per a processadors d'escriptori el novembre de 2008 amb el chipset Intel Core i7-9xx i X58. Va ser llançat als processadors Xeon amb el nom en codi Nehalem el març de 2009 i als processadors Itanium al febrer de 2010 (nom en codi Tukwila).
Va ser substituït per Intel Ultra Path Interconnect a partir del 2017 a les plataformes Xeon Skylake-SP.

## Implementació

El QPI és un element d'una arquitectura de sistema que Intel anomena arquitectura QuickPath que implementa el que Intel anomena tecnologia QuickPath. En la seva forma més senzilla en una placa base d'un sol processador, s'utilitza un únic QPI per connectar el processador al concentrador IO (per exemple, per connectar un Intel Core i7 a un X58). En casos més complexos de l'arquitectura, parells d'enllaç QPI separats connecten un o més processadors i un o més concentradors d'IO o concentradors d'encaminament en una xarxa a la placa base, permetent que tots els components accedeixin a altres components a través de la xarxa. Igual que amb HyperTransport, l'arquitectura QuickPath assumeix que els processadors tindran controladors de memòria integrats i permet una arquitectura d'accés a memòria no uniforme (NUMA).
Cada QPI consta de dos enllaços de dades punt a punt de 20 carrils, un en cada direcció (full duplex), amb un parell de rellotge separat en cada direcció, per a un total de 42 senyals. Cada senyal és un parell diferencial, de manera que el nombre total de pins és de 84. Els 20 carrils de dades es divideixen en quatre "quadrants" de 5 carrils cadascun. La unitat bàsica de transferència és el flit de 80 bits, que té 8 bits per a la detecció d'errors, 8 bits per a la "capçalera de la capa d'enllaç" i 64 bits per a les dades. Un flit de 80 bits es transfereix en dos cicles de rellotge (quatre transferències de 20 bits, dos per tic de rellotge). Els amples de banda QPI s'anuncien calculant la transferència de 64 bits (8 bytes) de dades cada dos cicles de rellotge en cada direcció.
Tot i que les implementacions inicials utilitzen enllaços únics de quatre quadrants, l'especificació QPI permet altres implementacions. Cada quadrant es pot utilitzar de manera independent. En servidors d'alta fiabilitat, un enllaç QPI pot funcionar en un mode degradat. Si falla un o més dels 20+1 senyals, la interfície funcionarà utilitzant 10+1 o fins i tot 5+1 senyals restants, fins i tot reassignant el rellotge a un senyal de dades si el rellotge falla. La implementació inicial de Nehalem va utilitzar una interfície completa de quatre quadrants per aconseguir 25.6 GB/s (6,4 GT/s × 1 byte × 4), que proporciona exactament el doble de l'amplada de banda teòrica del 1600 d'Intel MHz FSB utilitzat al chipset X48.
Tot i que alguns processadors Core i7 de gamma alta exposen QPI, altres processadors d'escriptori i mòbils Nehalem "principals" destinats a plaques d'un sol sòcol (p. ex. LGA 1156 Core i3, Core i5 i altres processadors Core i7 de les famílies Lynnfield/Clarksfield i successores) no exposen QPI externament, perquè aquests processadors no estan pensats per participar en sistemes multisocket.
Tanmateix, QPI s'utilitza internament en aquests xips per comunicar-se amb el " uncore ", que forma part del xip que conté controladors de memòria, PCI Express i GPU del costat de la CPU, si n'hi ha; el nucli pot estar o no al mateix dau que el nucli de la CPU, per exemple, està en un dau separat al Clarkdale/Arrandale basat en Westmere. $^{:3}$
Tot i que l'enllaç QPI core-uncore no està present als processadors Sandy Bridge d'escriptori i mòbils (com ho va ser a Clarkdale, per exemple), la interconnexió d'anell intern entre nuclis en matriu també es basa en els principis darrere de QPI, almenys en la mesura pel que fa a la coherència de la memòria cau. $^{:10}$

## Capes de protocol

QPI s'especifica com una arquitectura de cinc capes, amb capes físiques, d'enllaç, d'encaminament, de transport i de protocol separades. En dispositius dissenyats només per a l'ús de QPI punt a punt sense reenviament, com ara els processadors Core i7-9xx i Xeon DP, la capa de transport no està present i la capa d'encaminament és mínima.

### Capa física

    La capa física comprèn el cablejat real i els transmissors i receptors diferencials, més la lògica de nivell més baix que transmet i rep la unitat de la capa física. La unitat de la capa física és el "phit" de 20 bits. La capa física transmet un "phit" de 20 bits utilitzant una única vora de rellotge en 20 carrils quan els 20 carrils estan disponibles, o en 10 o 5 carrils quan es reconfigura el QPI a causa d'una fallada. Tingueu en compte que, a més dels senyals de dades, s'envia un senyal de rellotge del transmissor al receptor (la qual cosa simplifica la recuperació del rellotge a costa de pins addicionals).

### Capa d'enllaç

    La capa d'enllaç s'encarrega d'enviar i rebre flits de 80 bits. Cada flit s'envia a la capa física com a quatre fitxes de 20 bits. Cada flit conté un CRC de 8 bits generat pel transmissor de la capa d'enllaç i una càrrega útil de 72 bits. Si el receptor de la capa d'enllaç detecta un error CRC, el receptor notifica al transmissor mitjançant un flit a l'enllaç de retorn de la parella i el transmissor torna a enviar el flit. La capa d'enllaç implementa el control de flux mitjançant un esquema de crèdit/dèbit per evitar que el buffer del receptor es desbordi. La capa d'enllaç admet sis classes diferents de missatges per permetre a les capes superiors distingir els flits de dades dels missatges que no són de dades, principalment per mantenir la coherència de la memòria cau. En implementacions complexes de l'arquitectura QuickPath, la capa d'enllaç es pot configurar per mantenir fluxos separats i control de flux per a les diferents classes. No és clar si això és necessari o implementat per a implementacions d'un sol processador i de doble processador.

### Capa d'encaminament

    La capa d'encaminament envia una unitat de 72 bits que consta d'una capçalera de 8 bits i una càrrega útil de 64 bits. La capçalera conté la destinació i el tipus de missatge. Quan la capa d'encaminament rep una unitat, examina les seves taules d'encaminament per determinar si la unitat ha arribat al seu destí. Si és així, es lliura a la capa següent superior. Si no, s'envia al QPI de sortida correcte. En un dispositiu amb només un QPI, la capa d'encaminament és mínima. Per a implementacions més complexes, les taules d'encaminament de la capa d'encaminament són més complexes i es modifiquen dinàmicament per evitar enllaços QPI fallits.

### Capa de transport

    La capa de transport no és necessària i no està present en dispositius destinats només a connexions punt a punt. Això inclou el Core i7. La capa de transport envia i rep dades a través de la xarxa QPI dels seus companys en altres dispositius que potser no estan connectats directament (és a dir, les dades poden haver estat encaminades a través d'un dispositiu intervingut). La capa de transport verifica que les dades estiguin completes i, si no, sol·licita la retransmissió al seu parell.

### Capa de protocol

    La capa de protocol envia i rep paquets en nom del dispositiu. Un paquet típic és una fila de memòria cau. La capa de protocol també participa en el manteniment de la coherència de la memòria cau enviant i rebent missatges rellevants.

## Referències

* ↑ «An Introduction to the Intel QuickPath Interconnect» (en anglès). Intel Corporation, 30-01-2009. [Consulta: 14 juny 2011].
* ↑ David Kanter. «Intel's Quick Path Evolved» (en anglès). Realworldtech.com, 20-07-2011. [Consulta: 21 gener 2014].
* ↑ Gabriel Torres. «Everything You Need to Know About The QuickPath Interconnect (QPI)» (en anglès). Hardware Secrets, 25-08-2008. [Consulta: 23 gener 2017].
* ↑ David Kanter. «The Common System Interface: Intel's Future Interconnect» (en anglès). Real World Tech, 28-08-2007. [Consulta: 14 agost 2014].
* ↑ David Kanter. «Intel's Tukwila Confirmed to be Quad Core» (en anglès). Real World Tech, 05-05-2006. Arxivat de l'original el 10 maig 2012. [Consulta: 13 setembre 2013].
* ↑ «Intel® Xeon® Processor Scalable Family Technical Overview» (en anglès).
* ↑ «Intel Demonstrates Industry's First 32nm Chip and Next-Generation Nehalem Microprocessor Architecture» (en anglès). Arxivat de l'original el 2008-01-02. [Consulta: 31 desembre 2007].
* ↑ David Kanter. «The Common System Interface: Intel's Future Interconnect» (en anglès). Real World Tech, 28-08-2007. [Consulta: 14 agost 2014].
* ↑ David Kanter. «The Common System Interface: Intel's Future Interconnect» (en anglès). Real World Tech, 28-08-2007. [Consulta: 14 agost 2014].
* ↑ Chris Angelini. «QPI, Integrated Memory, PCI Express, And LGA 1156 - Intel Core i5 And Core i7: Intel's Mainstream Magnum Opus» (en anglès). Tomshardware.com, 07-09-2009. [Consulta: 21 gener 2014].
* ↑ Published on 25th January 2010 by Richard Swinburne. «Feature - Intel GMA HD Graphics Performance» (en anglès). bit-tech.net, 25-01-2010. [Consulta: 21 gener 2014].
* ↑ «Intel Clarkdale 32nm CPU-and-GPU chip benchmarked (again) - CPU - Feature» (en anglès). HEXUS.net, 25-09-2009. [Consulta: 21 gener 2014].
* ↑ Oded Lempel. «2nd Generation Intel Core Processor Family: Intel Core i7, i5 and i3» (en anglès). hotchips.org, 28-07-2013. Arxivat de l'original el 2020-07-29. [Consulta: 21 gener 2014].
* ↑ Oded Lempel. «2nd Generation Intel Core Processor Family: Intel Core i7, i5 and i3» (en anglès). hotchips.org, 28-07-2013. Arxivat de l'original el 2020-07-29. [Consulta: 21 gener 2014].
* ↑ «An Introduction to the Intel QuickPath Interconnect» (en anglès). Intel Corporation, 30-01-2009. [Consulta: 14 juny 2011].