NO312926B1 - Kommunikasjon over multimaster buss - Google Patents

Kommunikasjon over multimaster buss Download PDF

Info

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
Application number
NO19993558A
Other languages
English (en)
Other versions
NO993558L (no
NO993558D0 (no
Inventor
Geir Robert Svelmoe
Original Assignee
Ericsson Telefon Ab L M
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
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to NO19993558A priority Critical patent/NO312926B1/no
Publication of NO993558D0 publication Critical patent/NO993558D0/no
Priority to DE10084835A priority patent/DE10084835B3/de
Priority to PCT/NO2000/000242 priority patent/WO2001006382A1/en
Priority to AU63240/00A priority patent/AU6324000A/en
Priority to GB0200399A priority patent/GB2367671B/en
Publication of NO993558L publication Critical patent/NO993558L/no
Publication of NO312926B1 publication Critical patent/NO312926B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/167Interprocessor 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 .
NO19993558A 1999-07-20 1999-07-20 Kommunikasjon over multimaster buss NO312926B1 (no)

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)

* Cited by examiner, † Cited by third party
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

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) スイッチ回路