NO312926B1 - Kommunikasjon over multimaster buss - Google Patents
Kommunikasjon over multimaster buss Download PDFInfo
- Publication number
- NO312926B1 NO312926B1 NO19993558A NO993558A NO312926B1 NO 312926 B1 NO312926 B1 NO 312926B1 NO 19993558 A NO19993558 A NO 19993558A NO 993558 A NO993558 A NO 993558A NO 312926 B1 NO312926 B1 NO 312926B1
- Authority
- NO
- Norway
- Prior art keywords
- fifo memory
- party
- bus
- data
- arrangement according
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims description 10
- 230000015654 memory Effects 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 17
- 230000008901 benefit Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
Description
Teknisk område
Denne oppfinnelse kan brukes i et multimaster bussystem (for eksempel PCI, VME og så videre) hvor punkt-til-punkt kommunikasjon mellom to mastere skal utføres ved å bruke delt RAM til overføring av data. Et spesialtilfelle vil være datautveksling mellom to SW-prosesser som utføres på samme prosessor, eller mellom en SW-prosess og en avbruddsrutine.
Teknisk bakgrunn
Problemområde
Når delt minne brukes til å utveksle data mellom to kommuniserende parter som arbeider asynkront i forhold til hverandre, må man sikre at de to ikke oppdaterer samme minnepo-sisjon(er) samtidig.
I noen systemer vil en leseoperasjonen på bussen være lang-sommere enn en skriveoperasjonen på bussen (adressedeko-dingen for målet vil være den samme, men for at en leseope-rasjon skal fullføres må data hentes fra bussgrensesnittet, mens for en skriveoperasjon kan dataene temporært bufres i grensesnittkretsen for bussen). Derfor ville et "bare skri-vende"-system være mer effektivt.
Kjente løsninger og problemer med disse
For å få tilgang til en delt minneressurs har noen prosessorer og bussystemer en atomisk "test-og-sett"-instruksjon som blir en enkelt lese-modifiser-skriv operasjon på bussen. Disse instruksjoner blir ikke understøttet av alle prosessorer/bussystemer, og hvis de blir understøttet må man ha en plattformspesifikk del av SW (vanligvis vil denne delvis være manuelt kodet i assemblyspråk). Hvis man kan unngå felles minneposisjoner som skal oppdateres av mer enn én part, vil man oppnå en mer portabel høynivå SW.
For prosesser som utføres på samme CPU vil det typisk være nødvendig å maskere avbrudd under minneoppdateringen. Vanligvis blir prosesser på brukernivå ikke tillatt å gjøre dette, og de må utstede et systemkall for å utføre oppdate-ringen. Ved å eliminere behovet for å få minneposisjoner oppdatert av mer enn én part, vil det ikke være noen for-skjell i SW hvis de to prosesser utføres på samme prosessor eller på to forskjellige prosessorer som har bussaksess til den annens minne.
Oppfinnelsen
Kortfattet sammenfatning av oppfinnelsen
Hensiktene bak foreliggende oppfinnelse er derfor å tilveiebringe et arrangement for punkt-til-punkt kommunikasjon mellom to mastere eller prosesser over et multimaster buss-system, som tillater kommunikasjon og utføres asynkront og samtidig, som er uavhengig av maskinvare, tillater raskere overføring av data mellom masterne eller prosessene og let-ter belastningen på buss og CPU(er).
Ytterligere hensikter ved oppfinnelsen er å unngå bruk av felles minneposisjoner oppdatert av mer enn én part, og unngå leseoperasjoner på bussen.
Disse hensikter oppfylles i et arrangement ifølge oppfinnelsen omfattende FIFO-minner for overføring av data mellom de to CPUer/kommunikasjonsparter, hvor en FIFO er tildelt hver CPU/part, hvor hver part tillates å lese bare fra sin tildelte FIFO, og bare skrive FIFOen tildelt den andre part.
Den nøyaktige beskyttelsesomfang for den foreliggende oppfinnelse er definert i de vedlagte patentkrav.
Tegninger
Oppfinnelsen vil nå bli beskrevet med henvisning til de vedlagte tegninger hvor: Figur 1 viser to FIFO-minner arrangert for overføring av data mellom CPUer/parter, A og B. Figur 2 viser i prinsippet hvordan en FIFO er innrettet til å motta data fra bare én CPU/part B, og hvordan lese/ skriveindeksene blir oppdatert. Figur 3 viser det fulle arrangement av FIFOer ifølge oppfinnelsen . Figur 4 viser et forenklet overblikksbilde av et system hvor oppfinnelsen kan benyttes.
Detaljert beskrivelse av oppfinnelsen
Oppfinnelsen forslår en HW uavhengig løsning for en kommu-nikasjonsmekanisme over delt minne. De to kommuniserende parter kan være plassert på samme prosessor eller i forskjellige prosessorer i et multimaster bussystem.
Kommunikasjonen mellom de to CPUer/kommuniserende parter utføres gjennom et par med SW FIFOer, én for hver retning av dataflyten. Det spesielle med disse FIFOer er den fysis-ke plassering av deres komponenter.
For å beskrive denne FIFO-organisering vil vi starte med å tegne to regulære SW FIFOer i et felles fysisk minne, figur 1, og gradvis migrere mot SW FIFO-organiseringen foreslått ved oppfinnelsen.
Leseindeksen og skriveindeksen peker henholdsvis på den neste posisjon som skal leses og skrives. Mengden data i FIFOene må beregnes fra verdiene av lese- og skriveindeksene sammen med FIFO-størrelsen, som i dette tilfellet er N. De kommuniserende prosesser/prosessorer arbeider asynkront og samtidig. Bruk av en teller til å holde antallet data-poster i en FIFO ville medføre behov for en innbyrdes eks-kluderingsmekanisme for å oppdatere denne teller.
Når leseindeksen er lik skriveindeksen er FIFOen tom. FIFOen kan høyst inneholde N-l poster. Hvis FIFOen skulle inneholde N poster, ville leseindeksen være like skriveindeksen og det ville være umulig å sjeldne mellom et fullt og et tomt datafelt.
Prosess B, som sender data til prosess A ved å sette dem inn i FIFO(A), er den eneste prosess som kan skrive til da-taf eltet i FIFO(A) og til writeldx(A). Før noen data blir skrevet, må prosess B beregne mengden tilgjengelig rom i FIFO(A). Prosess A leser writeldx(A), beregner antallet data i FIFOen, leser dataene og oppdaterer readldx(A) (som kan oppdateres bare ved prosess A). For data i den annen retning er rollene motsatt. Siden de to prosesser er asynk-rone i forhold til hverandre, er det viktig at den respek-tive indeks blir oppdatert etter at lese- eller skriveoperasjonen er fullført.
Hvis FIFO-komponentene er plassert på en slik måte at bare skriveaksesser skal utføres på bussen som knytter sammen de to prosessorer, ville man bare ha nettomengden av bussak-sesser til å overføre dataene (det vil si man ville aldri aksessere bussen for å lese en indeks som ikke er oppdatert) . Ved å organisere FIFOene på denne måten ville man skrive informasjon til en annen CPU til bussen og lese all den innkomne informasjon i det lokale minnet (som også ville være raskere).
Figur 2 viser den foreslåtte plassering av komponentene for FIFOen benyttet for dataene fra en CPU(B) til en annen CPU(A). Når B ønsker å sende data til A sjekker den i sitt lokale minne for verdien av readldx(A). Siden A ikke tillates å oppdatere writeldx(A) i sitt lokale minne, kan B beregne den tilgjengelige plass i FIFO(A) basert på rea-dldx (A) og den huskede verdi av writeldx(B) (som B har skrevet inn i As minne tidligere) . B skriver da dataene et-terfulgt av en ny writeldx(A) i As minne.
Det fullstendige bilde av plasseringen av de to FIFO-komponenter er vist i figur 3.
All informasjon (data og indekser) som skal leses av det fjerntliggende system, må skrives inn i dette systems minne, men selvfølgelig må også en lokal kopi av indeksene opprettholdes.
Siden et FIFO-par bare er en punkt-til-punkt kommunika-sjonsmekanisme, må det være et par for hvert par av kommuniserende parter.
Figur 4 viser et forenklet overblikk over et system hvor oppfinnelsen kan benyttes.
Fordeler
Portabilitet: Det kan implementeres i høynivå språk uten noen plattformspesifikk assemblyinstruksjon eller 0S-systemkall.
De to kommuniserende parter kan utføres på samme prosessor eller på to forskjellige prosessorer med den samme høynivå kode for å ta hånd om kommunikasjonen.
Bussbelastning: Bussen mellom de to CPUer vil være opptatt for et kortere tidsrom siden det bare vil være skrivetrans-aksjoner og bare nettomengden av de nødvendige data som vil legges på bussen. Jo mindre dataskuren er dess mer effektivt vil "bare skriving" være, sammenlignet med et 1ese/skrivesystem.
CPU belastning: Siden data kan bufres på alle bussgrense-snitt nedover transaksjonsbanen, vil operasjonen fullføres på mindre tid og derfor gi mer tid for annen prosessering.
En viktig fordel ved oppfinnelsen er at den kan implementeres i programvare alene, det vil si uten å gjøre endringer i maskinvaren i de involverte systemer.
Claims (9)
1. Arrangement for å tilveiebringe punkt-til-punkt kommunikasjon mellom en første part og en andre part over en in-tern multimaster buss ved bruk av delt RAM for å overføre data, hvor dataene er i form av en datastrøm og hvor ar-rangementet omfatter et første og et andre FIFO-minne arrangert i nevnte RAM,
karakterisert ved at det første FIFO-minnet er arrangert lokalt til nevnte første part og det andre FIFO-minnet er arrangert lokalt til nevnte andre part, idet den første part bare tillates å lese fra et datafelt i det første FIFO-minnet og bare skrive til et datafelt i det andre FIFO-minnet.
2. Arrangement ifølge krav 1,
karakterisert ved at den andre part bare tillates å lese fra et datafelt i det andre FIFO-minnet og bare skrive til et datafelt i det første FIFO-minnet.
3. Arrangement ifølge krav 1 eller 2, karakterisert ved at hvert FIFO-minne inkluderer en skriveindeks for sitt eget datafelt og en le-seindeks for datafeltet i det andre FIFO-minnet, hvor indeksene i det første FIFO-minnet bare oppdateres av den andre part og indeksene i det andre FIFO-minnet bare oppdateres av den første part.
4. Arrangement ifølge krav 3,
karakterisert ved at hvert FIFO-minne inkluderer en lokal kopi av indeksene i det andre FIFO-minnet .
5. Arrangement ifølge krav 1 eller 4, karakterisert ved at de kommuniserende parter er bussmastere. '
6. Arrangement ifølge krav 1 eller 4, karakterisert ved at de kommuniserende parter er SW-prosesser.
7. Arrangement ifølge krav 1 eller 4, karakterisert ved at de kommuniserende parter omfatter en prosess og en avbruddsrutine.
8. Arrangement ifølge et av de foregående krav, karakterisert ved at bussystemet er en PCI-buss.
9. Arrangement ifølge et av de foregående krav, karakterisert ved bussystemet er en VME-buss .
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO19993558A NO312926B1 (no) | 1999-07-20 | 1999-07-20 | Kommunikasjon over multimaster buss |
DE10084835A DE10084835B3 (de) | 1999-07-20 | 2000-07-19 | Anordnung in einem Multimaster-Bussystem |
PCT/NO2000/000242 WO2001006382A1 (en) | 1999-07-20 | 2000-07-19 | Software fifos in a multimaster bus system |
AU63240/00A AU6324000A (en) | 1999-07-20 | 2000-07-19 | Software fifos in a multimaster bus system |
GB0200399A GB2367671B (en) | 1999-07-20 | 2000-07-19 | Software fifos in a multimaster bus system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO19993558A NO312926B1 (no) | 1999-07-20 | 1999-07-20 | Kommunikasjon over multimaster buss |
Publications (3)
Publication Number | Publication Date |
---|---|
NO993558D0 NO993558D0 (no) | 1999-07-20 |
NO993558L NO993558L (no) | 2001-01-22 |
NO312926B1 true NO312926B1 (no) | 2002-07-15 |
Family
ID=19903600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO19993558A NO312926B1 (no) | 1999-07-20 | 1999-07-20 | Kommunikasjon over multimaster buss |
Country Status (5)
Country | Link |
---|---|
AU (1) | AU6324000A (no) |
DE (1) | DE10084835B3 (no) |
GB (1) | GB2367671B (no) |
NO (1) | NO312926B1 (no) |
WO (1) | WO2001006382A1 (no) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE68924306T2 (de) * | 1988-06-27 | 1996-05-09 | Digital Equipment Corp | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. |
US5276806A (en) * | 1988-09-19 | 1994-01-04 | Princeton University | Oblivious memory computer networking |
US5267191A (en) * | 1989-04-03 | 1993-11-30 | Ncr Corporation | FIFO memory system |
JPH02310664A (ja) * | 1989-05-26 | 1990-12-26 | Hitachi Ltd | 共有メモリを用いた通信方式 |
JPH07122864B2 (ja) * | 1991-07-22 | 1995-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システム、データ処理システムに使用するインターフエース回路及びデータ・プロセツサ間の通信方法 |
WO1993004432A2 (en) * | 1991-08-16 | 1993-03-04 | Multichip Technology | High-performance dynamic memory system |
FR2687487B1 (fr) * | 1992-02-19 | 1996-12-20 | Alcatel Business Systems | Systeme de partage de temps d'acces a une memoire partagee entre un processeur et d'autres applications. |
JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
US5925099A (en) * | 1995-06-15 | 1999-07-20 | Intel Corporation | Method and apparatus for transporting messages between processors in a multiple processor system |
US5594702A (en) * | 1995-06-28 | 1997-01-14 | National Semiconductor Corporation | Multi-first-in-first-out memory circuit |
-
1999
- 1999-07-20 NO NO19993558A patent/NO312926B1/no unknown
-
2000
- 2000-07-19 WO PCT/NO2000/000242 patent/WO2001006382A1/en active Application Filing
- 2000-07-19 AU AU63240/00A patent/AU6324000A/en not_active Abandoned
- 2000-07-19 DE DE10084835A patent/DE10084835B3/de not_active Expired - Fee Related
- 2000-07-19 GB GB0200399A patent/GB2367671B/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
NO993558L (no) | 2001-01-22 |
AU6324000A (en) | 2001-02-05 |
NO993558D0 (no) | 1999-07-20 |
WO2001006382A1 (en) | 2001-01-25 |
GB0200399D0 (en) | 2002-02-27 |
DE10084835B3 (de) | 2005-12-22 |
GB2367671A (en) | 2002-04-10 |
GB2367671B (en) | 2003-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2391833C (en) | Parallel processor architecture | |
US6430657B1 (en) | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock | |
US8316191B2 (en) | Memory controllers for processor having multiple programmable units | |
US6427196B1 (en) | SRAM controller for parallel processor architecture including address and command queue and arbiter | |
EP1236088B1 (en) | Register set used in multithreaded parallel processor architecture | |
US5751995A (en) | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively | |
TW393622B (en) | Multiple execution unit dispatch with iInstruction dependency | |
JPH01246655A (ja) | 多重プロセッサ計算機システムのための記憶サブシステム | |
EP0905629A1 (en) | Bridge having a ditributing burst engine | |
CN101221493A (zh) | 并行处理器中的多线程执行 | |
EP0908826A2 (en) | Packet protocol and distributed burst engine | |
US5621896A (en) | Data processor with unified store queue permitting hit under miss memory accesses | |
US5029073A (en) | Method for fast establishing a co-processor to memory linkage by main processor | |
CA2007167C (en) | Apparatus and method for increased operand availability in a data processing unit with a store through cache memory unit strategy | |
GB2200481A (en) | Maintaining coherence between a microprocessor's integrated cache and external memory | |
GB2200482A (en) | Monitoring control flow in a microprocessor | |
NO312926B1 (no) | Kommunikasjon over multimaster buss | |
US11966335B2 (en) | Hardware interconnect with memory coherence | |
TW380237B (en) | Data processing system register control | |
TW388818B (en) | Method and system for single cycle direct execution of floating-point status and control register instructions | |
JP2000099496A (ja) | キャッシュ記憶装置 | |
RU2113010C1 (ru) | Многопроцессорная векторная эвм | |
JP3209521B2 (ja) | メモリアクセス制御方法及び計算機システム | |
JPS6052453B2 (ja) | コンピユ−タシステムに関するプロセス制御ブロツク | |
JP3704367B2 (ja) | スイッチ回路 |