HK1061445B - Registers for data transfers within a multithreaded processor - Google Patents
Registers for data transfers within a multithreaded processor Download PDFInfo
- 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
Links
Claims (30)
- 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.
- 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.
- 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.
- 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.
- Prozessor (12) nach Anspruch 1, wobei die Vielzahl von Registern (32, 34, 36, 38, 40) eine Vielzahl von Pipelines zwischen den Programmierstufen herstellen.
- 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.
- 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.
- Prozessor (12) nach Anspruch 7, außerdem umfassend eine Synchronisationseinheit durch die Funktionspipelineeinheit.
- Prozessor (12) nach Anspruch 7, wobei die Funktionspipelineeinheit eine Vielzahl von Funktionspipelinestufen (60a...60m) umfasst.
- Prozessor (12) nach Anspruch 7, wobei jede von der Vielzahl von Funktionspipelinestufen (60a...60m) eine andere Systemfunktion durchführt.
- Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) ein Datenpaket der Programmreihenfolge nach verarbeiten.
- Prozessor (12) nach Anspruch 7, wobei das Datenpaket Mehrfachkontexten in der Vielzahl von Programming Engines (16) zugewiesen werden.
- Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) mithilfe der Funktionspipelineeinheit des Systems eine Datenpaketverarbeitungsfunktion ausführt.
- Prozessor (12) nach Anspruch 7, wobei die Vielzahl von Programming Engines (16) eine Signalisierung zwischen Threads durchführt.
- 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; unddas 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.
- 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.
- Verfahren nach Anspruch 15, außerdem umfassend das Zuweisen von Tasks für die Paketverarbeitung an die Vielzahl von Programming Engines (16).
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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); unddie Herstellung von Programmierstufen, die der Vielzahl von Programming Engines (16a...16h) entsprechen.
- 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.
- 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.
- 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.
- 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.
- Multiprocessing-System nach Anspruch 28, wobei jede von der Vielzahl von Programming Engines außerdem einen inhaltsadressierbaren (CAM) Speicher (45) umfasst.
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 |