[go: up one dir, main page]

HK1061445B - Registers for data transfers within a multithreaded processor - Google Patents

Registers for data transfers within a multithreaded processor Download PDF

Info

Publication number
HK1061445B
HK1061445B HK04102104.5A HK04102104A HK1061445B HK 1061445 B HK1061445 B HK 1061445B HK 04102104 A HK04102104 A HK 04102104A HK 1061445 B HK1061445 B HK 1061445B
Authority
HK
Hong Kong
Prior art keywords
programming
registers
engines
data
processor
Prior art date
Application number
HK04102104.5A
Other languages
English (en)
French (fr)
Chinese (zh)
Other versions
HK1061445A1 (en
Inventor
Gilbert Wolrich
Mark Rosenbluth
Debra Bernstein
Matthew Adiletta
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/116,670 external-priority patent/US7437724B2/en
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of HK1061445A1 publication Critical patent/HK1061445A1/en
Publication of HK1061445B publication Critical patent/HK1061445B/en

Links

Claims (30)

  1. Prozessor (12), umfassend:
    eine Vielzahl von Programming Engines (16), wobei jede Programming Engine (16a...16h) konfiguriert ist, um eine Vielzahl von Threads parallel zu verarbeiten, jede Programming Engine eine Vielzahl von Registern (32, 34, 36, 38, 40) aufweist, um Daten zwischen der Programming Engine (16a...16h) und Stellen außerhalb der Programming Engine zu übertragen, dadurch gekennzeichnet, dass die Vielzahl von Programming Engines angeordnet ist, um eine Pipeline (50) zu ergeben, wobei die Vielzahl von Registern Next-Neighbour-Register (35) umfasst, die konfiguriert sind, um Daten von einer externen Einheit zu empfangen, und durch einen kontextrelativen Vorgang gewählt werden, wobei diese Next-Neighbour-Register verwendet werden, um Daten zwischen der Programming Engine und einer nachfolgenden, angrenzenden Programming Engine in der Pipeline zu übertragen.
  2. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) Next-Neighbour-Register (35) umfassen, die in einer First-In-First-Out-Konfiguration angeordnet sind.
  3. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) konfiguriert ist, um der Vielzahl von Programming Engines (16) Tasks für die Paketverarbeitung zuzuweisen.
  4. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) konfiguriert ist, um Programmierstufen herzustellen, die der Vielzahl von Programming Engines (16) entsprechen.
  5. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) eine Vielzahl von Pipelines zwischen den Programmierstufen herstellen.
  6. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) einer ersten Programming Engine (16a...16h) eine aktuell ausführende Programmierstufe der Pipeline (50) halten und die Vielzahl von Registern einer zweiten angrenzenden Programming Engine (16a...16h) eine nachfolgende Programmierstufe der Pipeline (50) halten.
  7. Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) durch eine Funktionspipeline-Steuereinheit eine Funktionspipeline (50) unterstützen, die Funktionsdaten zwischen der Vielzahl von Programming Engines (16) weitergibt.
  8. Prozessor (12) nach Anspruch 7, außerdem umfassend eine Synchronisationseinheit durch die Funktionspipelineeinheit.
  9. Prozessor (12) nach Anspruch 7, wobei die Funktionspipelineeinheit eine Vielzahl von Funktionspipelinestufen (60a...60m) umfasst.
  10. Prozessor (12) nach Anspruch 7, wobei jede von der Vielzahl von Funktionspipelinestufen (60a...60m) eine andere Systemfunktion durchführt.
  11. Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) ein Datenpaket der Programmreihenfolge nach verarbeiten.
  12. Prozessor (12) nach Anspruch 7, wobei das Datenpaket Mehrfachkontexten in der Vielzahl von Programming Engines (16) zugewiesen werden.
  13. Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) mithilfe der Funktionspipelineeinheit des Systems eine Datenpaketverarbeitungsfunktion ausführt.
  14. Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) eine Signalisierung zwischen Threads durchführt.
  15. Verfahren zur Übertragung von Daten zwischen Programming Engines (16), wobei das Verfahren umfasst:
    das Lesen von Daten aus einer Vielzahl von Datenregistern (32, 34, 36, 38, 40) einer ersten Programming Engine (16a...16h), um die Daten in einem Parallelprozessor zu verarbeiten, der eine Vielzahl von Programming Engines aufweist, die angeordnet sind, um eine Pipeline zu ergeben, die die parallele Ausführung von Mehrfachkontexten in jeder von der Vielzahl von Programming Engines (16) unterstützt; und
    das Schreiben von Daten in eine Vielzahl von Datenregistern (32, 34, 36, 38, 40) einer zweiten Programming Engine (16a...16h), wobei die erste und zweite Programming Engine angrenzende Programming Engines sind, wobei die Vielzahl von Registern Next-Neighbour-Register umfasst, die konfiguriert sind, um Daten von einer externen Einheit zu empfangen, und durch einen kontextrelativen Vorgang gewählt werden, wobei die Next-Neighbour-Register verwendet werden, um Daten zwischen einer Programming Engine und einer nachfolgenden, angrenzenden Programming Engine in der Pipeline zu übertragen.
  16. Verfahren nach Anspruch 15, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) der ersten und zweiten Programming Engine Next-Neighbour-Register (35) sind, die in einer First-In-First-Out-Konfiguration angeordnet sind.
  17. Verfahren nach Anspruch 15, außerdem umfassend das Zuweisen von Tasks für die Paketverarbeitung an die Vielzahl von Programming Engines (16).
  18. Verfahren nach Anspruch 15, außerdem umfassend das Herstellen von Programmierstufen, die der Vielzahl von Programming Engines (16) entsprechen, und um eine Vielzahl von Pipelines zwischen den Programmierstufen herzustellen.
  19. Verfahren nach Anspruch 15, außerdem umfassend das Halten einer aktuell ausführenden Programmierstufe der Pipeline in der Vielzahl von Registern (32, 34, 36, 38, 40) der ersten Programming Engine (16a...16h) und das Halten einer nachfolgenden Programmierstufe der Pipeline in der Vielzahl von Registern (32, 34, 36, 38, 40) der zweiten Programming Engine (16a...16h).
  20. Verfahren nach Anspruch 15, wobei das Lesen und Schreiben von Daten die Unterstützung einer Funktionspipeline (50) durch eine Funktionspipeline-Steuereinheit umfasst, die zwischen der Vielzahl von Programming Engines (16) Funktionsdaten weitergibt.
  21. Computerprogramm-Produkt, das auf einem computerlesbaren Medium gespeichert ist, wobei das Programm Anweisungen enthält, um einen Parallelprozessor zu veranlassen, das Verfahren von Anspruch 15 durchzuführen.
  22. Computerprogramm-Produkt nach Anspruch 21, außerdem umfassend Anweisungen, die den Prozessor (12) veranlassen, Daten zwischen Next-Neighbour-Registern (35) der angrenzenden ersten und zweiten Programming Engines zu übertragen.
  23. Computerprogramm-Produkt nach Anspruch 21, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) mithilfe einer Pipelinekonfiguration der Register (32, 34, 36, 38, 40) und von Programming Engines (16) Datenübertragungen ausführt.
  24. Computerprogramm-Produkt nach Anspruch 21, außerdem umfassend Anweisungen, die den Prozessor (12) veranlassen, die Vielzahl von Datenregistern (32, 34, 36, 38, 40) zu konfigurieren, um der Vielzahl von Programming Engines Tasks (16) für die Paketverarbeitung zuzuweisen.
  25. Erzeugnis, umfassend:
    ein Speichermedium mit darauf gespeicherten Anweisungen, die Folgendes bewirken, wenn sie von einer Maschine ausgeführt werden:
    die Übertragung von Daten von einem von einer ersten Vielzahl von Registern (32, 34, 36, 38, 40) in einer ausführenden Programming Engine (16a...16h) zu einem von einer zweiten Vielzahl von Registern (32, 34, 36, 38, 40), die in einer anderen Programming Engine (16a...16h) liegen, wobei jede Programming Engine konfiguriert ist, um eine Vielzahl von Threads parallel zu verarbeiten, dadurch gekennzeichnet, dass die Vielzahl von Programming Engines angeordnet ist, um eine Pipeline (50) zu ergeben, wobei mindestens eine von der ersten oder zweiten Vielzahl von Next-Neighbour-Registern umfasst, die konfiguriert ist, um Daten von einer externen Einheit zu empfangen, und durch einen kontextrelativen Vorgang gewählt wird, wobei die Next-Neighbour-Register verwendet werden, um Daten zwischen einer Programming Engine und einer nachfolgenden, angrenzenden Programming Engine in der Pipeline zu übertragen;
    die Zuweisung von Tasks für die Paketverarbeitung an die Programming Engines (16a...16h); und
    die Herstellung von Programmierstufen, die der Vielzahl von Programming Engines (16a...16h) entsprechen.
  26. Erzeugnis nach Anspruch 25, außerdem umfassend Anweisungen, um Daten von einem Next-Neighbour-Register (35), das in einer aktuell ausführenden Programming Engine (16a...16h) von den Programming Engines (16) liegt, zu einem Next-Neighbour-Register (35) zu übertragen, das in einer Programming Engine (16a...16h) angrenzend zur aktuell ausführenden Programming Engine (16a...16h) liegt.
  27. Erzeugnis nach Anspruch 25, außerdem umfassend Anweisungen, um in der ersten Vielzahl von Registern (32, 34, 36, 38, 40) eine aktuell ausführende Programmierstufe der Pipeline (50) zu halten, und in der zweiten Vielzahl von Registern (32, 34, 36, 38, 40) eine nachfolgende Programmierstufe der Pipeline (50) zu halten.
  28. Multiprocessing-System, umfassend:
    eine Synchronisationseinheit, um Datenpakete durch eine Funktionspipelineeinheit zu verarbeiten; und eine Vielzahl von Programming Engines (16), wobei jede von der Vielzahl von Programming Engines konfiguriert ist, um eine Vielzahl von Threads parallel zu verarbeiten, dadurch gekennzeichnet, dass die Vielzahl von Programming Engines angeordnet ist, um eine Pipeline (50) zu ergeben, und eine Vielzahl von Next-Neighbour-Registern (35) umfasst, die konfiguriert ist, um das Verfahren von Anspruch 15 durchzuführen.
  29. Multiprocessing-System nach Anspruch 28, außerdem umfassend gemeinsam benutzte Speicherstellen, die von der Vielzahl von Programmierstufen der Vielzahl von Programming Engines (16) benutzt werden, wobei die gemeinsam benutzten Variablen einen kritischen Abschnitt einschließen, der die Lese-Modifizierungs-Schreib-Zeit der Speicherstellen definiert.
  30. Multiprocessing-System nach Anspruch 28, wobei jede von der Vielzahl von Programming Engines außerdem einen inhaltsadressierbaren (CAM) Speicher (45) umfasst.
HK04102104.5A 2002-04-03 2003-03-27 Registers for data transfers within a multithreaded processor HK1061445B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/116,670 US7437724B2 (en) 2002-04-03 2002-04-03 Registers for data transfers
US10/116,670 2002-04-03
PCT/US2003/009478 WO2003085517A1 (en) 2002-04-03 2003-03-27 Registers for data transfers within a multithreaded processor

Publications (2)

Publication Number Publication Date
HK1061445A1 HK1061445A1 (en) 2004-09-17
HK1061445B true HK1061445B (en) 2009-06-26

Family

ID=

Similar Documents

Publication Publication Date Title
EP1381939B1 (de) Register für datenuebertragung in einem multithreaded prozessor
US6934951B2 (en) Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
EP1481323B1 (de) Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
EP1236088B9 (de) Registersatz zur verwendung in einer parallellen mehrfachdrahtprozessorarchitektur
EP1582980B1 (de) Kontextwechselverfahren, vorrichtung, programm, aufzeichnungsmedium und zentraleinheit
US6944850B2 (en) Hop method for stepping parallel hardware threads
US20050132380A1 (en) Method for hiding latency in a task-based library framework for a multiprocessor environment
JP2007200288A (ja) 実行スレッドをグループ化するためのシステム及び方法
EP1504349B1 (de) Signalaggregation
HK1061445B (en) Registers for data transfers within a multithreaded processor
EP0136218A2 (de) Pipeline-Mehrtorprozessor
US7899995B1 (en) Apparatus, system, and method for dependent computations of streaming multiprocessors
HK1072298B (en) Pipelines of multithreaded processor cores for packet processing