Apparatus comprising a circular buffer and an arrangement carrying out a programm accessing said circular buffer
7 claims: 5 independent, 2 dependent
- 1Verfahren zum Betreiben einer Anordnung mit - einem über einen Schreibzeiger und einen Lesezeiger (DP x , KP x ) adressierbaren Umlaufspeicher (D, K), - einer Einrichtung, welche ein auf den Umlaufspeicher (D, K) zugreifendes Programm ausführt, und - einer Signalisierungseinrichtung, durch welche ein Sprung des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt signalisiert wird, dadurch gekennzeichnet, daß der Umlaufspeicher (D, K) derart ausgelegt wird, daß der Sprung des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt mit dem bestimmungsgemäßen Ende einer Programmschleife des auf den Umlaufspeicher (D, K) zugreifenden Programmes zusammenfällt, und daß die Signalisierung des Sprunges des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt als Abbruchbedingung für die Programmschleife verwendet wird.
- 2Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Signalisierung des Sprunges des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt durch ein Setzen, Rücksetzen oder Umschalten einer Kennung erfolgt.
- 3Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Kennung auf externe Veranlassung hin in einen keinen Sprung des Schreibzeigers oder des Lesezeigers (DP x , KP x ) signalisierenden Zustand versetzbar ist.
- 4Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß Sprünge des Schreibzeigers vom Speicherende zum Speicheranfang oder umgekehrt, und Sprünge des Lesezeigers (DP x , KB x ) vom Speicherende zum Speicheranfang oder umgekehrt unterschiedlich signalisiert werden.
- 5Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß Sprünge des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang und Sprünge des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicheranfang zum Speicherende unterschiedlich signalisiert werden.
- 6Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Signalisierung des Sprunges des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt von einer den Schreibzeiger oder den Lesezeiger erzeugenden oder verwaltenden Adreßgenerierungseinheit veranlaßt wird.
- 7Anordnung mit - einem über einen Schreibzeiger und einen Lesezeiger (DP x , KP x ) adressierbaren Umlaufspeicher (D, K), - einer Einrichtung, welche ein auf den Umlaufspeicher (D, K) zugreifendes Programm ausführt, und - einer Signalisierungseinrichtung, durch welche ein Sprung des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum speicheranfang oder umgekehrt signalisiert wird, dadurch gekennzeichnet, daß der Umlaufspeicher (D, K) derart ausgelegt wird, daß der Sprung des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt mit dem bestimmungsgemäßen Ende einer Programmschleife des auf den Umlaufspeicher (D, K) zugreifenden Programmes zusammenfällt, und daß die Signalisierung des Sprunges des Schreibzeigers oder des Lesezeigers (DP x , KP x ) vom Speicherende zum Speicheranfang oder umgekehrt als Abbruchbedingung für die Programmschleife verwendet wird.
Independent claims7
37 paragraphs, as filed
The present invention relates to a method according to the Preamble of claim 1 and an apparatus according the preamble of claim 7.
About write and / or read pointer (read and / or read pointer) addressable cyclic memory, which as circular buffers or memories are called, are based to "normal", for data storage designed storage devices or storage areas; However, be - unlike the normal store - the writing and / or Read pointer managed such that they of when crossing Storage area end automatically to the memory area beginning, and when the memory area beginning exceeded are automatically set to the storage area and the end thereby the circulating memory-forming memory area never being able to leave.
Such circulating memory have long been known and require no further explanation.
A containing such a circulating memory Arrangement in 'EFFICIENT DUAL PORT FIRST-IN, FIRST OUT BUFFER WITH AN OVERRUN AND UNDERRUN DETECTION SCHEME 'IBM TECHNICAL DISCLOSURE BULLETIN, US, IBM CORP. NEW YORK, vol. 33, no. 12, Page 370-371 XP000121692 ISSN: 0018-8689; described.
The use of circulating Save proves particularly at regularly recurring or repeated write and / or Reads as advantageous because of the Available memory to be used particularly efficiently can and the writing and reading of data lack consuming writing and especially Leseadreßverwaltung can be done quickly and easily.
Regularly recurring or repeated read and write operations occur in, among other things, but of course far not exclusively in the digital signal processing on, since there because of the regular structure of the used Algorithms to go through quite a lot of program loops are.
The run of this program loops must especially when the data or signals entered keeping pace (in Real-time) to be processed is very urgent. Experience shows that this is even with the use of Outstanding Save as memory devices not readily is possible.
The present invention is therefore based on the object, the method according to the preamble of claim 1 or the apparatus according to the preamble of claim 7 in such a way that these even faster and / or simpler data or signal processing enable.
This object is inventively achieved by The method claimed in claim 1 process or by the in Claim 7 claimed device dissolved.
This allows the implementation and evaluation a counting program loop runs (Hardware and / or software-implemented) loop counter, based on which the program loop end has been detected, . omitted
The program sequence and thus also the contribution thereby made Data or signal processing can greatly in this way faster and / or easier than the previously Case.
Advantageous developments of the invention are of the subclaims.
The invention is described using an exemplary embodiment explained in more detail with reference to the drawing. Show it <dl tsize="7"><dt>figure 1</dt><dd>a schematic diagram illustrating which takes place in a first program loop operations,</dd><dt>figure 2</dt><dd>a schematic diagram illustrating the operations in the subsequent execution held a second program loop, and</dd><dt>figure 3</dt><dd>a schematic diagram illustrating the operations in the subsequent execution a third program loop to take place.</dd></dl>
The hereinafter described in more detail circulating memory (circular buffer or circular memory) is part of a microcontroller and serves for the implementation of a Fast Loop especially for DSP (Digital Signal Processor) applications.
However, it is already pointed out at this point, that the use of the described circular buffer then is not limited. It can also be a separate element or be made part of any other devices and is generally used for any purpose.
The circular buffer is characterized by a signaling device of which is adapted to the leap of Write and / or the read pointer from the memory to the end of the beginning memory and / or to signal vice versa. signaling is preferably of a write and / or Read pointer generating or managing Adreßgenerierungseinheit causes.
The signaling is the example under consideration in the setting or resetting or switching of an identifier (flag). It can principle but also in any other way done. Important for the present example considered is that the signaling takes place in a manner, which makes it possible that these from one to the circular buffer accessing program perceptible, particularly as is a condition of a conditional branch instruction used.
The identifier is the example under consideration for controlling the Sequence of accessing the circular buffer program used.
The program may for filtering audio, video or other Signals representing information to be designed. To this end, the data must be multiplied by a plurality of coefficients will.
The data and the coefficients are stored in separate circular buffers stored. The designated hereinafter as a data buffer D circular buffer has n storage sections for Storing n data words d<sub>0</sub> to d<sub>n-1</sub> on; the hereafter as coefficients buffer K designated circular buffer includes n storage sections for storing n coefficients k<sub>0</sub> to k<sub>n-1</sub> on. Each of the n data words d<sub>0</sub> to d<sub>n-1</sub> should with each of the n coefficients k<sub>0</sub> to k<sub>n-1</sub> are multiplied.
This is done by executing n program loops of which the first, the second and the third schematically in the figures, Figure 1 illustrates to the third
In the example illustrated in Figure 1 the first program loop The products are d<sub>0</sub>* k<sub>0</sub>, d<sub>1</sub>* k<sub>1</sub>, ... And d<sub>n-1</sub>* k<sub>n-1</sub>educated. with which coefficients multiplied Which data word is, in the figure 1 by double arrows P1<sub>0</sub> to P1<sub>n-1</sub> in which state the indices in which Order the respective multiplications are performed. The data word and the coefficient, which in each case one another multiply applicable, are data pointer DP<sub>0</sub>to DP<sub>n-1</sub> or coefficient pointer KP<sub>0</sub> to KP<sub>n-1</sub> selected, where the indices of the respective pointer the order specify in which they follow one another.
The first time through the illustrated in Figure 1 Program loop are represented by the data pointer DP<sub>0</sub> addressed Data word, so the data word d<sub>0</sub>, And by the Coefficient pointer KP<sub>0</sub> addressed coefficient, so the coefficient k<sub>0</sub> multiplied together. The data pointer and the coefficient pointer are incremented accordingly, and that in the adjoining the first program loop pass second program loop pass through the Data pointer DP<sub>1</sub> addressed data word, so the data word d<sub>1</sub>, And the coefficient pointer KP<sub>1</sub> addressed Coefficient, ie, the coefficient k<sub>1</sub> multiplied together will. This process is repeated until finally in an n-th program loop pass through the Data pointer DP<sub>n-1</sub> addressed data word, so the data word d<sub>n-1</sub>, And the coefficient pointer KP<sub>n-1</sub> addressed Coefficient, ie, the coefficient k<sub>n-1</sub> multiplied together will. If then again the data pointer and the Coefficient pointer are incremented, they jump as they are each at the end of the circular buffers D and K forming storage areas are automatically at the beginning the respective memory areas. The return or the imminent return of the coefficient pointer thereby dissolves the a return signaling Action which, as already mentioned above, the example considered in the set, reset or switch an identifier is.
After each program loop cycle (up to the next Program through the loop) will be reviewed whether by the state of said identifier, a return of the Coefficient pointer is signaled. Is that the case, so no next program loop cycle more is carried out, the implementation of the program loop thus ended. Subsequently, the data pointer is incremented, and thereby indicating to the next data word (data word d<sub>1</sub>).
Starting from this state (the data pointer points to the Data word d<sub>1</sub>, The coefficient pointer points to the coefficient k<sub>0</sub>) Is the illustrated in Figure 2 second Program loop performed. In this second program loop The products are d<sub>1</sub>* k<sub>0</sub>, d<sub>2</sub>* k<sub>1</sub>, ... And d<sub>0</sub>* k<sub>n-1</sub> educated. with which coefficients multiplied Which data word is, in the figure 2 by double arrows P2<sub>0</sub> to P2<sub>n-1</sub> in which state the indices in which Order the respective multiplications are performed. The data word and the coefficient, which in each case one another multiply applies, in turn on the Data pointer DP<sub>0</sub> to DP<sub>n-1</sub> or coefficient pointer KP<sub>0</sub> to KP<sub>n-1</sub> selected, wherein the indices of the respective pointer which specify order in which they follow one another.
The first time through the illustrated in Figure 2 Program loop are represented by the data pointer DP<sub>0</sub> addressed Data word, so the data word d<sub>1</sub>, And by the Coefficient pointer KP<sub>0</sub> addressed coefficient, so the coefficient k<sub>0</sub> multiplied together. The data pointer and the coefficient pointer are incremented accordingly, and that in the adjoining the first program loop pass second program loop pass through the Data pointer DP<sub>1</sub> addressed data word, so the data word d<sub>2</sub>, And the coefficient pointer KP<sub>1</sub> addressed Coefficient, ie, the coefficient k<sub>1</sub> multiplied together will. This process is repeated until finally in an n-th program loop pass through the Data pointer DP<sub>n-1</sub> addressed data word, so the data word d<sub>0</sub>, And the coefficient pointer KP<sub>n-1</sub> addressed Coefficient, ie, the coefficient k<sub>n-1</sub> multiplied together will.
If then again the data pointer and the coefficient pointer are incremented, jumps the coefficient pointer, since it is at the end of the circular buffer K-forming The memory area is automatically at the beginning of the Storage area back; the data pointer has to return already carried out (before the n-th program loop cycle). The return or imminent Return of the coefficient pointer solves this again Set, reset or switching of such events signaling of identification.
If the taking place as in the first program loop Checking the condition of said identifier that by signaled this a return of the coefficient pointer is, so is no next program loop cycle more performed, the implementation of the program loop thus ended. Subsequently, the data pointer is incremented thereby indicating to the next data word (data word d<sub>2</sub>).
Starting from this state (the data pointer points to the Data word d<sub>2</sub>, The coefficient pointer points to the coefficient k<sub>0</sub>) Is the illustrated in Figure 3 third Program loop performed. In this third program loop The products are d<sub>2</sub>* k<sub>0</sub>, d<sub>3</sub>* k<sub>1</sub>, ... And d<sub>1</sub>* k<sub>n-1</sub> educated. with which coefficients multiplied Which data word is, in the figure 3 by double arrows P3<sub>0</sub> to P3<sub>n-1</sub> in which state the indices in which Order the respective multiplications are performed. The data word and the coefficient, which in each case one another multiply applies, in turn on the Data pointer DP<sub>0</sub> to DP<sub>n-1</sub> or coefficient pointer KP<sub>0</sub> to kp<sub>n-1</sub> selected, wherein the indices of the respective pointer which specify order in which they follow one another.
The first time through the illustrated in Figure 3 Program loop are represented by the data pointer DP<sub>0</sub> addressed Data word, so the data word d<sub>2</sub>, And by the Coefficient pointer KP<sub>0</sub> addressed coefficient, so the coefficient k<sub>0</sub> multiplied together. The data pointer and the coefficient pointer are incremented accordingly, and that in the adjoining the first program loop pass second program loop pass through the Data pointer DP<sub>1</sub> addressed data word, so the data word d<sub>3</sub>, And the coefficient pointer KP<sub>1</sub> addressed Coefficient, ie, the coefficient k<sub>1</sub> multiplied together will. This process is repeated until finally in an n-th program loop pass through the Data pointer DP<sub>n-1</sub> addressed data word, so the data word d<sub>1</sub>, And the coefficient pointer KP<sub>n-1</sub> addressed Coefficient, ie, the coefficient k<sub>n-1</sub> multiplied together will.
If then again the data pointer and the coefficient pointer are incremented, jumps the coefficient pointer, since it is at the end of the circular buffer K-forming The memory area is automatically at the beginning of the Storage area back; the data pointer has to return before (in front of the n-1-th program loop cycle) executed. The return or imminent Return of the coefficient pointer solves this again Set, reset or switching of such events signaling of identification.
If the as with the above-described program loops check carried out and the state of said identifier that through this a return of the coefficient pointer is signaled, then no next program loop pass longer performed, performing So the program loop terminates.
Until all the data words with all coefficients multiplied are, have more, more specifically a total of n program loops be executed, wherein execution of the program loops is each terminated when the return of the Coefficient pointer is signaled.
The interpretation or the use of the coefficient buffer K in a manner that the jump of the coefficient pointer and / or the same a defined behavior Other as a termination condition of a currently executed program loop can be used, allowing a waiver the guiding and checking a loop counter. Abandoning the loop counter or similar proves (hardware or software implemented) facilities in many respects advantageous: leave one hand the program loops with less effort and / or execute faster (because the initialization and the required at each iteration of change can be omitted loop count), and on the other hand can Program interrupts as interrupts, and the like be handled more easily and quickly (because no loop counter must be more buffered in the stack).
The commonly used commands to program loops Loop commands can by conditional jump instructions be replaced.
The coefficient pointer defines the example under consideration in each case the location from which the next coefficient to is read; so it is a read-only pointer. Accordingly, this is what is signaled, the return of a Read pointer from the end of the coefficient buffer forming Storage area thereof to the start. Alternatively or in addition, also a jump of the read pointer from the beginning of the coefficient buffer forming memory area on the end of which and / or cracks of a combined read / write pointer or a write pointer to be signaled. Thereby, the jumps of the write pointer and the read pointer and / or jumps from the same storage end to Store start and from the top of memory for storage end equal are signaled or different.
The signaling of a write and / or read pointer jump can automatically after a predetermined time, to interrogating and evaluating the initiative of the signaling Program or circuit section or in response disabled in other events, withdrawn be or reset.
1 sheet
Sheet 1
Every citation, both waysCites: the store holds 3 of 4
| Document | Relation | Office |
|---|---|---|
| US4800524A | Cites | United States of America |
| US5519701A | Cites | United States of America |
| US5659698A | Cites | United States of America |
| "EFFICIENT DUAL-PORT FIRST-IM, FIRST-OUT BUFFER WITH AN OVERRUN AND UNDERRUN DETECTION SCHEME" IBM TECHNICAL DISCLOSURE BULLETIN,US,IBM CORP. NEW YORK, Bd. 33, Nr. 12, Seite 370-371 XP000121692 ISSN: 0018-8689 | Non-patent | – |
| "CLOSEST-TO-COMPLETION LOGIC TO STORE FINISHED PROGRAM EXCEPTION CODES" IBM TECHNICAL DISCLOSURE BULLETIN,US,IBM CORP. NEW YORK, Bd. 36, Nr. 4, Seite 87-89 XP000364450 ISSN: 0018-8689 | Non-patent | – |
4 members in 2 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 19741213 | Germany | A | |
| 19741213 | Germany | A | |
| 19741213 | Germany | – | |
| 19741213 | – | – | – |
| DE1997141213 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| EP0903663A2 | European Patent Office (EPO) | A2 | |
| EP0903663A3 | European Patent Office (EPO) | A3 | |
| US6189054B1 | United States of America | B1 | |
| EP0903663B1This record | European Patent Office (EPO) | B1 |
32 legal events, as 4 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal feeWithdrawnR119 | R119 | DE | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Notification of lapseLapsedST | ST | FR | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Fr: translation filedET | ET | EP | |
| Gb: ep patent (uk) treated as always having been void in accordance with gb section 77(7)/1977 [no translation filed]GBV | GBV | EP | |
| Corresponds to:REF | REF | EP | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedNOT ENGLISHFG4D | FG4D | GB | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Title (correction)APPARATUS COMPRISING A CIRCULAR BUFFER AND AN ARRANGEMENT CARRYING OUT A PROGRAMM ACCESSING SAID CIRCULAR BUFFERRTI1 | RTI1 | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Party data changed (applicant data changed or rights of an application transferred)RAP1 | RAP1 | EP | |
| Designation fees paidDE FR GB ITAKX | AKX | EP | |
| Request for examination filed17P | 17P | EP | |
| Information provided on ipc code assigned before grant7G 06F 5/06 A, 7G 06F 9/355 BRIC1 | RIC1 | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAL;LT;LV;MK;RO;SIAX | AX | EP | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAL;LT;LV;MK;RO;SIAX | AX | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 0903663
- Publication, DOCDB
- 0903663
- Publication, EPODOC
- EP0903663
- Application
- 98115903
- Application, DOCDB
- 98115903
- Application, EPODOC
- EP19980115903
Titles3
- German
- Anordnung mit einem Umlaufspeicher und mit eine Einrichtung, welche ein auf den Umlaufspeicher zugreifendes Programm ausführt
- English
- Apparatus comprising a circular buffer and an arrangement carrying out a programm accessing said circular buffer
- French
- Dispositif comprenant un tampon circulaire et un appareil exécutant un programme qui accède audit tampon circulaire
Classification
- CPC, 1
- G06F5/10
- IPC, 3
- G06F5 06
- G06F5 10
- G06F9 355
Designated states1
- Contracting states, 1
- Italy
