NO312926B1 - Communication over multimaster bus - Google Patents
Communication over multimaster bus 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 Technical area
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. This invention can be used in a multimaster bus system (eg PCI, VME and so on) where point-to-point communication between two masters is to be performed using shared RAM for data transfer. A special case would be data exchange between two SW processes that are executed on the same processor, or between a SW process and an interrupt routine.
Teknisk bakgrunn Technical background
Problemområde Problem area
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. When shared memory is used to exchange data between two communicating parties who work asynchronously in relation to each other, it must be ensured that the two do not update the same memory position(s) at the same time.
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. In some systems, a read operation on the bus will be slower than a write operation on the bus (the address decoding for the target will be the same, but for a read operation to complete, data must be fetched from the bus interface, while for a write operation, the data can be temporarily buffered in the bus interface circuit). Therefore, a "write-only" system would be more efficient.
Kjente løsninger og problemer med disse Known solutions and problems with these
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. To access a shared memory resource, some processors and bus systems have an atomic "test-and-set" instruction that becomes a single read-modify-write operation on the bus. These instructions are not supported by all processors/bus systems, and if they are supported you must have a platform-specific part of the SW (usually this will be partly manually coded in assembly language). If one can avoid shared memory positions to be updated by more than one party, a more portable high-level SW will be achieved.
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. For processes that are executed on the same CPU, it will typically be necessary to mask interrupts during the memory update. Typically, user-level processes are not allowed to do this, and must issue a system call to perform the update. By eliminating the need to have memory locations updated by more than one party, there will be no difference in SW if the two processes are executed on the same processor or on two different processors that have bus access to the other's memory.
Oppfinnelsen The invention
Kortfattet sammenfatning av oppfinnelsen Concise summary of the invention
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). The purposes behind the present invention are therefore to provide an arrangement for point-to-point communication between two masters or processes over a multimaster bus system, which allows communication to be performed asynchronously and at the same time, which is independent of hardware, allows faster transfer of data between the masters or processes and eases the load on the bus and CPU(s).
Ytterligere hensikter ved oppfinnelsen er å unngå bruk av felles minneposisjoner oppdatert av mer enn én part, og unngå leseoperasjoner på bussen. Further purposes of the invention are to avoid the use of shared memory positions updated by more than one party, and to avoid read operations on the bus.
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. These purposes are fulfilled in an arrangement according to the invention comprising FIFO memories for the transfer of data between the two CPUs/communication parties, where a FIFO is allocated to each CPU/party, where each party is allowed to read only from its allocated FIFO, and only write the FIFO allocated the other party.
Den nøyaktige beskyttelsesomfang for den foreliggende oppfinnelse er definert i de vedlagte patentkrav. The exact scope of protection for the present invention is defined in the attached patent claims.
Tegninger Drawings
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. The invention will now be described with reference to the attached drawings where: Figure 1 shows two FIFO memories arranged for the transfer of data between CPUs/parties, A and B. Figure 2 shows in principle how a FIFO is arranged to receive data from only one CPU/part B, and how the read/write indexes are updated. Figure 3 shows the full arrangement of FIFOs according to the invention. Figure 4 shows a simplified overview of a system where the invention can be used.
Detaljert beskrivelse av oppfinnelsen Detailed description of the invention
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. The invention proposes a HW independent solution for a communication mechanism over shared memory. The two communicating parties can be located on the same processor or in different processors in a multimaster bus system.
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. The communication between the two CPUs/communicating parties is carried out through a pair of SW FIFOs, one for each direction of the data flow. The special feature of these FIFOs is the physical location of their components.
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. To describe this FIFO organization, we will start by drawing two regular SW FIFOs in a common physical memory, Figure 1, and gradually migrate towards the SW FIFO organization proposed by the invention.
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. The read index and the write index respectively point to the next position to be read and written. The amount of data in the FIFOs must be calculated from the values of the read and write indices together with the FIFO size, which in this case is N. The communicating processes/processors work asynchronously and simultaneously. Using a counter to keep the number of data records in a FIFO would entail the need for a mutual exclusion mechanism to update this counter.
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. When the read index is equal to the write index, the FIFO is empty. The FIFO can contain at most N-l records. If the FIFO were to contain N records, the read index would be equal to the write index and it would be impossible to rarefy between a full and an empty data field.
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. Process B, which sends data to process A by putting it in FIFO(A), is the only process that can write to the da table in FIFO(A) and to writeldx(A). Before any data is written, process B must calculate the amount of available space in FIFO(A). Process A reads writeldx(A), calculates the number of data in the FIFO, reads the data and updates readldx(A) (which can be updated only by process A). For data in the other direction, the roles are reversed. Since the two processes are asynchronous in relation to each other, it is important that the respective index is updated after the read or write operation has been completed.
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). If the FIFO components are placed in such a way that only write accesses are to be performed on the bus connecting the two processors, one would only have the net amount of bus accesses to transfer the data (that is, one would never access the bus to read a index that is not updated) . By organizing the FIFOs in this way, one would write information to another CPU to the bus and read all the incoming information into the local memory (which would also be faster).
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. Figure 2 shows the proposed location of the components for the FIFO used for the data from one CPU(B) to another CPU(A). When B wants to send data to A, it checks in its local memory for the value of readldx(A). Since A is not allowed to update writeldx(A) in its local memory, B can calculate the available space in FIFO(A) based on rea-dldx(A) and the remembered value of writeldx(B) (which B has written into As memory earlier). B then writes the data followed by a new writeldx(A) in A's memory.
Det fullstendige bilde av plasseringen av de to FIFO-komponenter er vist i figur 3. The complete picture of the location of the two FIFO components is shown in Figure 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. All information (data and indexes) to be read by the remote system must be written into this system's memory, but of course a local copy of the indexes must also be maintained.
Siden et FIFO-par bare er en punkt-til-punkt kommunika-sjonsmekanisme, må det være et par for hvert par av kommuniserende parter. Since a FIFO pair is only a point-to-point communication mechanism, there must be a pair for each pair of communicating parties.
Figur 4 viser et forenklet overblikk over et system hvor oppfinnelsen kan benyttes. Figure 4 shows a simplified overview of a system where the invention can be used.
Fordeler Benefits
Portabilitet: Det kan implementeres i høynivå språk uten noen plattformspesifikk assemblyinstruksjon eller 0S-systemkall. Portability: It can be implemented in high-level languages without any platform-specific assembly instructions or 0S system calls.
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. The two communicating parties can be executed on the same processor or on two different processors with the same high-level code to handle the communication.
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. Bus load: The bus between the two CPUs will be busy for a shorter period of time since there will only be write transactions and only the net amount of the necessary data will be placed on the bus. The smaller the data shed, the more efficient "only writing" will be, compared to a 1ese/writing system.
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. CPU load: Since data can be cached on all bus interfaces down the transaction path, the operation will complete in less time and therefore leave more time for other processing.
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. An important advantage of the invention is that it can be implemented in software alone, i.e. without making changes to the hardware in the systems involved.
Claims (9)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO19993558A NO312926B1 (en) | 1999-07-20 | 1999-07-20 | Communication over multimaster bus |
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 |
DE10084835A DE10084835B3 (en) | 1999-07-20 | 2000-07-19 | Arrangement in a multimaster bus system |
PCT/NO2000/000242 WO2001006382A1 (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 (en) | 1999-07-20 | 1999-07-20 | Communication over multimaster bus |
Publications (3)
Publication Number | Publication Date |
---|---|
NO993558D0 NO993558D0 (en) | 1999-07-20 |
NO993558L NO993558L (en) | 2001-01-22 |
NO312926B1 true NO312926B1 (en) | 2002-07-15 |
Family
ID=19903600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO19993558A NO312926B1 (en) | 1999-07-20 | 1999-07-20 | Communication over multimaster bus |
Country Status (5)
Country | Link |
---|---|
AU (1) | AU6324000A (en) |
DE (1) | DE10084835B3 (en) |
GB (1) | GB2367671B (en) |
NO (1) | NO312926B1 (en) |
WO (1) | WO2001006382A1 (en) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0349123B1 (en) * | 1988-06-27 | 1995-09-20 | Digital Equipment Corporation | Multi-processor computer systems having shared memory and private cache memories |
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 (en) * | 1989-05-26 | 1990-12-26 | Hitachi Ltd | Communication system using shared memory |
JPH07122864B2 (en) * | 1991-07-22 | 1995-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Data processing system, interface circuit used in data processing system, and communication method between data processors |
EP0553338B1 (en) * | 1991-08-16 | 1999-10-13 | Cypress Semiconductor Corp. | High-performance dynamic memory system |
FR2687487B1 (en) * | 1992-02-19 | 1996-12-20 | Alcatel Business Systems | SYSTEM FOR SHARING ACCESS TIME TO A MEMORY SHARED BETWEEN A PROCESSOR AND OTHER APPLICATIONS. |
JPH0619785A (en) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | Distributed shared virtual memory and its constitution method |
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/en unknown
-
2000
- 2000-07-19 AU AU63240/00A patent/AU6324000A/en not_active Abandoned
- 2000-07-19 GB GB0200399A patent/GB2367671B/en not_active Expired - Fee Related
- 2000-07-19 WO PCT/NO2000/000242 patent/WO2001006382A1/en active Application Filing
- 2000-07-19 DE DE10084835A patent/DE10084835B3/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2367671A (en) | 2002-04-10 |
NO993558D0 (en) | 1999-07-20 |
WO2001006382A1 (en) | 2001-01-25 |
NO993558L (en) | 2001-01-22 |
GB2367671B (en) | 2003-10-15 |
DE10084835B3 (en) | 2005-12-22 |
AU6324000A (en) | 2001-02-05 |
GB0200399D0 (en) | 2002-02-27 |
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 | |
KR100501289B1 (en) | How to Improve Input / Output Performance Through Asynchronous Interface with Input / Output Sub-Processors | |
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 | |
JPH01246655A (en) | Memory subsystem for multiple processor computer system | |
KR910006144B1 (en) | Pipeline processor with smooth connection | |
CN101410797A (en) | Transactional memory in out-of-order processors | |
EP0908826A2 (en) | Packet protocol and distributed burst engine | |
US5621896A (en) | Data processor with unified store queue permitting hit under miss memory accesses | |
CN108334400A (en) | Memory is managed for Secure Enclave | |
JPH05508495A (en) | Global register for multiple processors | |
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 (en) | Communication over multimaster bus | |
TW380237B (en) | Data processing system register control | |
EP4134827A1 (en) | Hardware interconnect with memory coherence | |
TW388818B (en) | Method and system for single cycle direct execution of floating-point status and control register instructions | |
EP4002106A1 (en) | Information processing device and information processing method | |
RU2113010C1 (en) | Multiprocessor scalar computer | |
JP3209521B2 (en) | Memory access control method and computer system | |
JP3704367B2 (en) | Switch circuit |