HU215862B - Rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, továbbá eljárás kódszegmensek egymáshoz kapcsolására, valamint eljárás memória megosztására - Google Patents
Rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, továbbá eljárás kódszegmensek egymáshoz kapcsolására, valamint eljárás memória megosztására Download PDFInfo
- Publication number
- HU215862B HU215862B HU9301263A HU126393A HU215862B HU 215862 B HU215862 B HU 215862B HU 9301263 A HU9301263 A HU 9301263A HU 126393 A HU126393 A HU 126393A HU 215862 B HU215862 B HU 215862B
- Authority
- HU
- Hungary
- Prior art keywords
- buffer
- code
- processor
- pointer
- digital signal
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000000872 buffer Substances 0.000 claims abstract description 204
- 230000008878 coupling Effects 0.000 claims abstract description 7
- 238000010168 coupling process Methods 0.000 claims abstract description 7
- 238000005859 coupling reaction Methods 0.000 claims abstract description 7
- 230000008447 perception Effects 0.000 claims description 2
- 238000013138 pruning Methods 0.000 abstract 2
- 238000007781 pre-processing Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 16
- 230000003139 buffering effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 229910001369 Brass Inorganic materials 0.000 description 2
- 239000010951 brass Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/16—Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/002—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
- G10H7/004—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof with one or more auxiliary processor in addition to the main processing unit
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Complex Calculations (AREA)
Abstract
Rendszer kódszegmensek valós idejű dinamikűs egymáshőz kapcsőlására,első prőcesszőrral (26), másődik prőcesszőrral (22), tővábbá azőkáltal hőzzáférhető ősztőtt memóriával (28), ahől az ő ztőtt memória(28) első pűffert és másődik pűffert tartalmaz, tővábbá a másődikprőcesszőr (22) által végrehajtható kódőt az ősztőtt memóriában (28)az első prőcesszőrőn (26) keresztül periődikűsan f lváltva felfrissítőeszközt tartalmaz, ahől egy első helyzetben az első pűfferben lévő kódelső részét az első prőcesszőr (26) frissíti fel, míg a kód másődikrészét a másődik prőcesszőr (22) a másőd k pűfferből hajtja végre, ésegy másődik helyzetben a kód harmadik részét a másődik pűfferben azelső prőcesszőr (26) frissíti fel, míg a kód első részét a másődikprőcesszőr (22) az első pűfferből h jtja végre, valamint a kódpillanatnyi, első vagy másődik helyzetét jelző műtatóeszközttartalmaz. Eljárás kódszegmensek egymáshőz kapcsőlására aszinkrőntöbbprőcesszőrős számítógéprendszerben, első és másődik pűfferttartalmazó közös ősztőtt memóriáhőz való hőzzáféréssel, amelynek őránaz ősztőtt memóriában az első prőcesszőrral egy első kódőt hajtűnkvégre, miközben aszinkrőn módőn egy másődik prőcesszőrral egy másődikkódmődűlt tartalmazó kódszegmenseket töltünk be és kapcső űnk összeegy másődik prőcesszőrral, és a másődik kódmődűlt az elsőprőcesszőrral végrehajtjűk, miközben aszinkrőn módőn a megősztőttmemóriába a másődik prőcesszőrral egy harmadik kódmődűlt tartalma ókódszegmenst töltünk be és kapcsőlűnk egymáshőz, úgy, hőgy az elsőprőcesszőrral (26) az első pűfferből és a másődik pűfferből váltakőzvahajtjűk végre a kódőkat, a másődik prőcesszőrral (22) legal bb egykódmődűlt akkőr töltünk be a másődik pűfferbe és kapcsőlűnk össze,amikőr az első prőcesszőrral (26) az első pűfferből a kódőtvégrehajtjűk, tővábbá a másődik prőcesszőrral (22) legalább egy kdmődűlt akkőr töltünk be az első pűfferbe és kapcsőlűnk össze, amikőraz első prőcesszőrral (26) a másődik pűfferben lévő kódőt hajtjűkvégre, és az első prőcesszőrral (26) éppen végrehajtőtt kódőt trtalmazó pűffernek megfelelő címhelyhez egy első műtató váltőzótrendelünk, tővábbá egy másődik műtató váltőzót rendelünk a maradékpűffernek megfelelő címhelyhez, miűtán azt a másődik prőcesszőrral 22)a másődik prőcesszőr (22) által betöltött és egymáshőz kapcsőltlegalább egy kódmődűlt tartalmazó kódszegmenssel felfrissítettük,miközben az első prőcesszőrral (26) a kódőt hajtjűk végre. Eljárásmemória megősztására első prőcesszőrt (26) és másődik prőcesszőrt(22), tővábbá első és másődik pűffert tartalmazóprőcesszőrrendszerben, amelynek sőrán egy első műtatót és egy másődikműtató hőzűnk létre, amelyekkel jelezzük, hőgy a másődik prőcesszőrral(22) az első pűffert vagy a másődik pűffert hajtjűk-e éppen végre, éshőgy az első prőcesszőrral (26) az első pűffer és a máső
Description
Eljárás kódszegmensek egymáshoz kapcsolására aszinkron többprocesszoros számítógéprendszerben, első és második puffért tartalmazó közös osztott memóriához való hozzáféréssel, amelynek során az osztott memóriában az első processzorral egy első kódot hajtunk végre, miközben aszinkron módon egy második processzorral egy második kódmodult tartalmazó kódszegmenseket töltünk be és kapcsolunk össze egy második processzorral, és a második kódmodult az első processzorral végrehajtjuk, miközben aszinkron módon a megosztott memóriába a második processzorral egy harmadik kódmodult tartalmazó kódszegmenst töltünk be és kapcsolunk egymáshoz, úgy, hogy az első processzorral (26) az első pufferből és a második pufferből váltakozva hajtjuk végre a kódokat, a második processzorral (22) legalább egy kódmodult akkor töltünk be a második pufferbe és kapcsolunk össze, amikor az első processzorral (26) az első pufferből a kódot végrehajtjuk, továbbá a második processzorral (22) legalább egy kódmodult akkor töltünk be az első pufferbe és kapcsolunk össze, amikor az első processzorral (26) a második pufferben lévő kódot hajtjuk végre, és az első processzorral (26) éppen végrehajtott kódot tartalmazó pufifemek megfelelő címhelyhez egy első mutató változót rendelünk, továbbá egy második mutató változót rendelünk a maradék pufifemek megfelelő címhelyhez, miután azt a második processzorral (22) a második processzor (22) által betöltött és egymáshoz kapcsolt legalább egy kódmodult tartalmazó kódszegmenssel felfrissítettük, miközben az első processzorral (26) a kódot hajtjuk végre.
Eljárás memória megosztására első processzort (26) és második processzort (22), továbbá első és második puffért tartalmazó processzorrendszerben, amelynek során egy első mutatót és egy második mutatót hozunk létre, amelyekkel jelezzük, hogy a második processzorral (22) az első puffért vagy a második puffért hajtjuk-e éppen végre, és hogy az első processzorral (26) az első puffer és a második puffer közül melyiket frissítjük éppen fel, továbbá a második processzor (22) által végrehajtható kódot az első pufferben eltároljuk, majd az első mutatót és a második mutatót inicializáljuk, hogy a végrehajtható kódot tartalmazó első pufferre mutasson, és észleljük, ha a második processzor (22) a kód végrehajtását igényli, majd a második processzorral (22) az észlelés alapján olvassuk a második mutatót, majd a második processzorral (22) a második mutatót az első mutatóra másoljuk, ez után a második processzorral (22) ráállunk az első puffer és a második puffer közül az első mutató által kijelölt pufferre, és az első processzorral (26) újra rácsatlakozunk az első puffer és a második puffer közül a megfelelő pufferre, ezt követően a második processzorral (22) az újracsatlakozással egyidejűleg az első puffer és a második puffer közül a másikban lévő kódot végrehajtjuk, ez után a második mutatót az első processzorral (26) azonossá tesszük az első mutatóval, majd az első processzort (26) újra rácsatlakoztatjuk az első puffer és a második puffer közül az első mutató által kijelölttől eltérő pufferre, végül a második mutatót az első puffer és a második puffer közül a másikra irányítjuk.
A találmány végrehajtható számítógépkóddal végzett műveletek, nevezetesen kódszegmensek valós idejű dinamikus egymáshoz kapcsolásának elősegítésére vonatkozik. Ezen belül a találmány egyik tárgya egy rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, első processzorral, második processzorral, továbbá azok által hozzáférhető osztott memóriával. A találmány másik tárgya eljárás kódszegmensek egymáshoz kapcsolására aszinkron többprocesszoros számítógéprendszerben, első és második puffért tartalmazó közös osztott memóriához való hozzáféréssel, amelynek során az osztott memóriában az első processzorral egy első kódot hajtunk végre, miközben aszinkron módon egy második processzorral egy második kódmodult tartalmazó kódszegmenseket töltünk be és kapcsolunk össze egy második processzorral, és a második kódmodult az első processzorral végrehajtjuk, miközben aszinkron módon a megosztott memóriába a második processzorral egy harmadik kódmodult tartalmazó kódszegmenst töltünk be és kapcsolunk egymáshoz. A találmány további tárgya eljárás memória megosztására első és második processzort, továbbá első és második puffért tartalmazó processzorrendszerben.
Néhány bonyolult művelet digitális jelfeldolgozó processzorral történő végrehajtásánál egy ismert eljárás szerint alapvető egységeket, kódszegmenseket használ35 nak, amelyek aztán többféle módon köthetők össze. Ezek a kódszegmensek tulajdonképpen azokkal a különálló hardvermodulokkal tekinthetők egyenértékűnek, amelyek a jelenlegi műszaki szinthez tartozó számos rendszerben megtalálhatók, és amelyek a modulok kivá40 lasztására és konfigurálására kapcsolható vezetékezett összeköttetéseket vagy összekötő hidakat használnak.
Példa erre a digitális jelfeldolgozó processzorral ellátott zenei szintetizátor (jóllehet találmányunk nem korlátozódik csak erre, vagy a részletesebben bemutatott pél45 dákra, hanem az igénypontokban megfogalmazott oltalmi körön belül számos megoldás elképzelhető), ezek a modulok hardvermodulokat leképező analóg szoftvermegoldásokat tartalmazhatnak, és oszcillátorokként, szűrőkként vagy feszültségvezéreit erősítőként működ50 hetnek. Ezek a modulok főleg az 1970-es évek zenei szintetizátoraiban voltak megtalálhatók, ahol a kívánság szerinti összeköttetést, mint már említettük, dugaszolható összekötő hidak vagy vezetékek, vagy más, erre a célra alkalmas kapcsolóeszközök biztosították.
Az ilyen összetett funkciók digitális jelfeldolgozó processzorral való végrehajtása során számos alkalmazásnál szükség lehet a rendszer valós idejű újrakonfigurálására. Ismét ezt a zenei alkalmazást mintául véve, szükség lehet a zenei szintetizátor olyan digitális jelfel60 dolgozó processzoros implementálására, ahol a szinteti2
HU 215 862 Β zátomak alkalmasnak kell lennie valós idejű újrakonfigurálásra annak érdekében, hogy „politimbrális” legyen, azaz lehetővé tegye különböző hangok azonos időben történő generálását.
Olyan funkció megvalósításában, amelynél szükség van a valós idejű újrakonfigurálásra (jellemzően a digitális jelfeldolgozó processzoros rendszerekben és kódokban, jóllehet találmányunk nem korlátozódik erre a területre), a valós idejű újrakonfigurálás problémáját megoldani célzó egyik ismert megoldás az egy funkció megvalósításához, például egy bizonyos hangszer hangjának előállításához, szűréshez vagy hasonlóhoz szükséges, összes lehetséges kódszegmenst csoportosítja. Az adott funkció megvalósításához szükséges minden egyes kódszekvenciát egy „hívható” rutin végez. Ezen a módon egy adott konfigurációhoz csupán a vonatkozó szubrutinok listájára, valamint azok sorrendjére van szükség. Ennél a megvalósítási módnál azt gondolnánk, hogy a vázolt megoldás a modulok konfigurálását nagy rugalmassággal engedélyezi. A gyakorlat azonban azt mutatta, hogy ez a megvalósítási mód lényeges hiányosságokkal bír a végrehajtás során, amelyek az egyes, a sorra kerülő kódszegmens hívásához, valamint a szegmensről való visszatéréshez szükséges időigényből erednek.
A műszaki fejlődés során a fenti cél megvalósítására olyan megoldások váltak ismertté, amelyekben a szükséges kódmodulok szükség szerint egymáshoz kapcsolhatók. Ez az összekapcsolás egy egyszerű programozási művelettel végrehajtható volt, például olyan műveleti lépéssel, amely a különböző kódszegmenseket egyetlen kódszekvenciába gyűjtötte össze.
Ennek a javaslatnak egyik hiányossága épp a példaképpen felhozott alkalmazás kapcsán került napvilágra, tehát ott, ahol több végrehajtandó kódmodul változik az idő során, tehát például, ha egy digitális jelfeldolgozó processzornak rézfuvós és fafüvós hangszerek hangjának politimbrális kombinációjának megvalósításához előbb a rézfuvós hang kódmodult kell implementálnia, amelyet igen gyorsan a fafüvós hang kódmoduljának implementálása követ azért, hogy az eredményül kapott s hallott hangzásban a két hangszertípus hangját egyidejűleg halljuk. A vázolt probléma bizonyos alkalmazásokban az osztott memóriás digitális jelfeldolgozó processzoros társfeldolgozó rendszerek természetéből is fakad, melyek viszonylag kis, 8 kB körüli osztott memóriát tartalmaznak, amelyeknek a bennük lévő kódokat nagyon gyors ütemben kell végrehajtaniuk. A kis memóriaméret következtében a kívánt politimbrális hangzás vagy más hatás elérése érdekében a bázismemóriából periodikusan be kell tölteni a másik kódot az osztott memóriába, hogy a digitális jelfeldolgozó processzor azt végrehajthassa. Azonban ennek a nagyon gyorsan végrehajtandó (például jó minőségű szintetizált akusztikus hangzás létrehozására alkalmas) kódnak köszönhetően az a gond állt elő, hogy milyen módon lehet járulékos kódmodulokat ebbe a behatárolt méretű memóriába bejuttatni, elkerülve azt, hogy a gazdaprocesszor ennek az osztott memóriának a puffertárát megpróbálja felfrissíteni, miközben a puffertárban lévő kódot a digitális jelfeldolgozó processzor éppen feldolgozza.
Általában a digitális jelfeldolgozó processzor azokban a periódusokban le van tiltva, amelyekben a gazdaprocesszor járulékos digitális jelfeldolgozási programmodulokat tölt be az osztott memóriába, így elkerüljük, hogy a digitális jelfeldolgozó processzor megpróbálja ezeket az esetleg csupán részben az osztott memóriába beírt utasításokat végrehajtani. Az adatfeldolgozó eljárásokban régóta ismert a kettős pufferelésnek az a „pingpong” formája, ahol az egyik puffer az épp végrehajtás alatt álló kódokat tartalmazza, míg a másik puffer éppen feltöltés alatt áll. A helyzet aztán megfordul, és az éppen feltöltött pufferben lévő kódok kerülnek végrehajtásra, míg az előzőleg végrehajtott kódú pufferbe járulékos, újabb kódok kerülnek beírásra. Ez a hagyományos módszer, jóllehet hatásosan megakadályozza, hogy a bázis a digitális jelfeldolgozó processzorral éppen kapcsolatban álló puffért felfrissítse, nem minden esetben bizonyult eredményesnek. Például, ha a bázis a puffereket egymás után gyorsan kétszer igyekezett felfrissíteni, a kétszeres pufferelés technikája nem volt képes megakadályozni a digitális jelfeldolgozó processzorral éppen kapcsolatban, feldolgozás alatt álló puffer nem kívánt felfrissítését.
Többek között a fenti okok miatt is szükség van olyan kapcsolási elrendezés és eljárás létrehozására, amelyek a kódszegmensek dinamikus egymáshoz kapcsolása során a végrehajtható kódot a kódszegmensek valós idejű összekapcsolásával képesek optimalizálni.
A kitűzött feladatot legáltalánosabban gazdaprocesszort és digitális jelfeldolgozó processzort tartalmazó audio felvevő és lejátszó adaptert tartalmazó rendszerrel oldottuk meg. Az adapter mind a digitális jelfeldolgozó processzor, mind a gazdaprocesszor által hozzáférhető, osztott memóriával rendelkezik. A digitális jelfeldolgozó programot a gazdaprocesszor periodikusan beírja az osztott memóriába, és a programot a digitális jelfeldolgozó processzor végrehajtja. A nem az előbbi „pingpong” rendszerű, kétszeres pufferelési technika szerint, felváltva, az egyik puffer összekapcsolódik a digitális jelfeldolgozó processzorral, míg a másik puffért a gazdaprocesszor felfrissíti vagy összekapcsolja. Egy előnyös kiviteli alak értelmében két mutató változót használunk, melyek mindegyike jelzi, hogy a digitális jelfeldolgozó processzor éppen melyik puffért hajtja végre, és melyik puffért frissíti fel a gazdaprocesszor. A kiindulási esetben mindkét, A és B mutató a kiindulási digitális jelfeldolgozó kódot tartalmazó A pufferre mutat. Minden alkalommal, amikor a digitális jelfeldolgozó processzor a konfigurálható programot kívánja végrehajtani, elolvassa a B mutatót, rámásolja az A mutatóra, majd hozzákapcsolja ahhoz a pufferhez, amelyre az A mutató is mutat. Ha a gazdaprocesszor újra egy pufferhez kíván kapcsolódni, akkor előbb a B mutatót átviszi az A mutatóhoz, majd a B mutatót az ellentétes pufferre irányítja. A gazdaprocesszor ily módon nem tudja a digitális jelfeldolgozó processzor által éppen végrehajtott puffért felfrissíteni.
Pontosabban, a kitűzött feladat megoldása során olyan rendszert vettünk alapul kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, első processzorral, második processzorral, továbbá azok által
HU 215 862 Β hozzáférhető osztott memóriával, amelyben a találmány szerint az osztott memória első puffért és második puffért tartalmaz, továbbá a rendszer a második processzor által végrehajtható kódot az osztott memóriában az első processzoron keresztül periodikusan felváltva felfrissítő eszközt tartalmaz, ahol egy első helyzetben az első pufferben lévő kód első részét az első processzor frissíti fel, míg a kód második részét a második processzor a második pufferből hajtja végre, és egy második helyzetben a kód harmadik részét a második pufferben az első processzor frissíti fel, míg a kód első részét a második processzor az első pufferből hajtja végre, valamint a kód pillanatnyi, első vagy második helyzetét jelző mutatóeszközt tartalmaz.
A találmány szerinti rendszer egy előnyös kiviteli alakja értelmében az első processzor digitális jelfeldolgozó processzor vagy mikroprocesszor.
A kitűzött feladat megoldása során továbbá olyan eljárást vettünk alapul kódszegmensek egymáshoz kapcsolására aszinkron többprocesszoros számítógéprendszerben, első és második puffért tartalmazó közös osztott memóriához való hozzáféréssel, amelynek során az osztott memóriában az első processzorral egy első kódot hajtunk végre, miközben aszinkron módon egy második processzorral egy második kódmodult tartalmazó kódszegmenseket töltünk be és kapcsolunk össze egy második processzorral, és a második kódmodult az első processzorral végrehajtjuk, miközben aszinkron módon a megosztott memóriába a második processzorral egy harmadik kódmodult tartalmazó kódszegmenst töltünk be és kapcsolunk egymáshoz. Ezt a találmány értelmében úgy fejlesztettük tovább, hogy az első processzorral az első pufferből és a második pufferből váltakozva hajtjuk végre a kódokat, a második processzorral legalább egy kódmodult akkor töltünk be a második pufferbe és kapcsolunk össze, amikor az első processzorral az első pufferből a kódot végrehajtjuk, továbbá a második processzorral legalább egy kódmodult akkor töltünk be az első pufferbe és kapcsolunk össze, amikor az első processzorral a második pufferben lévő kódot hajtjuk végre, és az első processzorral éppen végrehajtott kódot tartalmazó puffemek megfelelő címhelyhez egy első mutató változót rendelünk, továbbá egy második mutató változót rendelünk a maradék puffemek megfelelő címhelyhez, miután azt a második processzorral a második processzor által betöltött és egymáshoz kapcsolt, legalább egy kódmodult tartalmazó kódszegmenssel felfrissítettük, miközben az első processzorral a kódot hajtjuk végre.
A találmány szerinti eljárás egy előnyös foganatosítási módja értelmében az első kódmodult a digitális jelfeldolgozó processzor által végrehajtott kódnak feleltetjük meg, és ezzel a digitális jelfeldolgozó processzort egy első hangnak megfelelő akusztikus adat létrehozására késztetjük.
A találmány szerinti eljárás egy további előnyös foganatosítási módja értelmében a második kódmodult a digitális jelfeldolgozó processzor által végrehajtott kódnak feleltetjük meg, és ezzel a digitális jelfeldolgozó processzort egy második hangnak megfelelő akusztikus adat előállítására késztetjük.
Ugyancsak előnyös a találmány értelmében, ha a digitális jelfeldolgozó processzorral az első kódmodult és a második kódmodult az első pufferből és a második pufferből felváltva, olyan sebességgel hajtjuk végre, amelynél az első hangot és a második hangot egyidejűleg szólaltatjuk meg.
A kitűzött feladat megoldása során továbbá olyan eljárást vettünk alapul memória megosztására első és második processzort, továbbá első és második puffért tartalmazó processzorrendszerben, amelynek során a találmány szerint egy első mutatót és egy második mutatót hozunk létre, amelyekkel jelezzük, hogy a második processzorral az első puffért vagy a második puffért hajtjuk-e éppen végre, és hogy az első processzorral az első puffer és a második puffer közül melyiket frissítjük éppen fel, továbbá a második processzor által végrehajtható kódot az első pufferben eltároljuk, majd az első mutatót és a második mutatót inicializáljuk, hogy a végrehajtható kódot tartalmazó első pufferre mutasson, és észleljük, ha a második processzor a kód végrehajtását igényli, majd a második processzorral az észlelés alapján olvassuk a második mutatót, majd a második processzorral a második mutatót az első mutatóra másoljuk, ez után a második processzorral ráállunk az első puffer és a második puffer közül az első mutató által kijelölt pufferre, és az első processzorral újra rácsatlakozunk az első puffer és a második puffer közül a megfelelő pufferre, ezt követően a második processzorral az újracsatlakozással egyidejűleg az első puffer és a második puffer közül a másikban lévő kódot végrehajtjuk, ez után a második mutatót az első processzorral azonossá tesszük az első mutatóval, majd az első processzort újra rácsatlakoztatjuk az első puffer és a második puffer közül az első mutató által kijelölttől eltérő pufferre, végül a második mutatót az első puffer és a második puffer közül a másikra irányítjuk.
A találmányt az alábbiakban a csatolt rajz segítségével ismertetjük részletesebben, amelyen a javasolt kapcsolási elrendezés és eljárás néhány példakénti foganatosítási módját, illetve kiviteli alakját tüntettük fel. A rajzon az
1. ábra a találmány szerinti összekapcsoló rendszert alkalmazó számítógépes audio felvevő és lejátszó adapterrendszer magas szintű tömbvázlata, a
2. ábrán az 1. ábrán bemutatott rendszerrel létrehozandó akusztikus hangzáshoz szükséges reprezentatív számítógépkód tömbvázlata látható, egy reprezentatív modul és almodulokat képező blokkok alakjában, a
3. ábra a 2. ábrán bemutatott módon több modult tartalmazó kódszegmensek vázlata, amely az 1. ábra számítógépes audiorendszerének digitális jelfeldolgozó rendszerében hajtható végre, a
4. ábra az 1. ábrán bemutatott rendszerben használható audio felvevő és lejátszó adapter funkcionális tömbvázlata, az
5. ábrán kódmodulok végrehajtását és végrehajtandó kódmodulok betöltését egyidejűleg le4
HU 215 862 Β hetővé tevő ismert kétszeres pufferelési technika elvét mutatjuk be, a
6A.-6D. ábrák a találmány szerinti összekapcsoló rendszerben használt mutatók szekvenciális helyzetét tüntetik fel vázlatosan, a
7. ábra az 1. ábra szerinti rendszer a találmány szerinti összekapcsoló eljárás tulajdonságainak ki nem használása esetén bekövetkező hibás működést okozó, meghatározott mutatóállapotot tüntet fel, és a
8. ábra az 1. ábra szerinti rendszer különböző állapotainak folyamatábráját mutatja, mely állapotok a javasolt eljárás szerint működve a 6. ábra mutatóit használják fel.
Először egy mintaként választott környezet általános leírását adjuk, amelybe a találmány szerinti kapcsolási elrendezés és eljárás hang létrehozása céljából adaptálható. Ezzel összefüggésben az 1. ábrán látható rendszer digitális jelfeldolgozó 26 processzora, valamint az azzal végrehajtott kódszegmensek által a zenei hangzás előállítása céljából nyújtott általános funkciókat ismertetjük a 2. és 3. ábrák segítségével (a 2. ábra általában hang előállításához szükséges jellemző kódszegmenseket, a 3. ábra zenei berkekben „multitimbrális” néven nevezett, több különböző hang egyidejű előállítása érdekében végrehajtandó kódszegmens-szekvenciát mutat. Az 1. ábrán bemutatott rendszer részét képező, ilyen digitális jelfeldolgozó 26 processzort tartalmazó példakénti audio felvevő és lejátszó adapter ismertetésére a 4. ábra kapcsán is visszatérünk, amit aztán a találmány szerinti újszerű összekapcsolási mód magyarázata követ, amely programcímekre mutató mutatókat használ, ahol a digitális jelfeldolgozó 26 processzorkód számos kódszegmense a 6A.-6D. ábrákon látható módon helyezkedik el.
Áttérve az 1. ábrára, azon egyszerűsített formában egy számítógépes audio felvevő és lejátszó 10 rendszert tüntettünk fel. A 10 rendszernek 22 gazdaprocesszort és 20 bemeneti/kimeneti buszt tartalmazó 12 számítógépe van. A 20 bemeneti/kimeneti buszhoz több jól ismert perifériális eszköz, például 13 billentyűzet, 14 monitor, 16 mikrofon és 18 hangszóró csatlakozik. A 10 rendszer - egy audio felvevő és lejátszó 24 adapter kivételével, amelyet a későbbiekben ismertetünk - bármely hagyományos és ismert személyi számítógépben fellelhető, például az IBM Corporation (Armonk, US), PS/2 néven védjegyezett és forgalmazott számítógépében. Ennek az audio felvevő és lejátszó 24 adapternek egyik előnyös kiviteli alakja szerint a 24 adapter olyan bővítőkártya, amely a 12 számítógép részét képező valamelyik bővítőcsatlakozóba dugaszolható. A 24 adapter előnyösen digitális jelfeldolgozó 26 processzort tartalmaz. Erre a célra például a Texas Instrument Corporation (US), TMS 320C25 típusjelű processzora alkalmas. Ezenkívül a 24 adapter mind a digitális jelfeldolgozó 26 processzor, mind pedig a 20 bemeneti/kimeneti buszon keresztül a 22 gazdaprocesszor által hozzáférhető 28 osztott memóriát tartalmaz.
Az audio felvevő és lejátszó 24 adapter egyik feladata a valamilyen audio-jelforrásról, például a 16 mikrofonról a 20 bemeneti/kimeneti buszra érkező analóg audioadatok (jelek) fogadása és felvétele, vagy digitalizálása, tárolása, majd későbbi feldolgozása, ami azt jelenti, hogy a digitális jeleket analóg jelekké kell visszaalakítani, majd a 20 bemeneti/kimeneti buszon keresztül megfelelő hangkeltő eszközhöz, például a 18 hangszóróhoz továbbítani. A 13 billentyűzet és a 14 monitor a számítógépes területen jól ismert hagyományos feladatokat látja el, azaz kapcsolatot teremt a felhasználó és a 12 számítógép között. Az egyszerűség kedvéért a 12 számítógép egyéb szükséges, de a találmány szempontjából lényegtelen egységét nem tüntettük fel, így nem láthatók a lemezes tárolóegységek, videokártyák stb.
A 24 adapter egy további fontos funkciója a szintetizált hangokat előállító kódok végrehajtása. Ebben az üzemmódban a végrehajtható kódokat a 28 osztott memóriában tároljuk, a 28 osztott memóriához hozzáférő digitális jelfeldolgozó 26 processzorral végrehajtjuk, a kapott eredményt pedig a 20 bemeneti/kimeneti buszon keresztül a 18 hangszóróhoz továbbítjuk, vagy szükség esetén felvesszük, vagy más célra használjuk. A későbbiekben még részletesebben is ismertetésre kerülő, 4. ábrán bemutatott rendszerrel kapcsolatos lényeges tulajdonsága a rendszernek, hogy az 1. ábrán bemutatott 10 rendszer egy szorosan csatolt társfeldolgozó rendszer, amelyben a 28 osztott memóriához több processzor, például a 22 gazdaprocesszor és a digitális jelfeldolgozó 26 processzor is hozzáfér. Jóllehet az 1. ábrán látható megvalósításban a processzorok egyikét felépítését és működését tekintve ismert digitális jelfeldolgozó 26 processzor alkotja, könnyen belátható, hogy a találmány nem korlátozódik kizárólag ilyen processzorra, és más, a kívánt eredményt biztosító rendszerekre is vonatkozik, amelyek ugyan nem tartalmaznak digitális jelfeldolgozó 26 processzort, de más módon biztosítják az osztott memóriához a többprocesszoros hozzáférést, hogy szorosan csatolt társfeldolgozó rendszert hozzanak létre.
Megjegyezzük, hogy a későbbiekben nyilvánvalóvá váló módon a 28 osztott memória olyan memóriahelyeket tartalmaz, amelyeket mind a 22 gazdaprocesszor, mind a digitális jelfeldolgozó 26 processzor olvasni tud, és amelyekbe a 22 gazdaprocesszor be tud írni. A 28 osztott memória olyan kódszegmenseket vagy modulokat tartalmaz, amelyeket a digitális jelfeldolgozó 26 processzor a kívánt hangzás létrehozásához végrehajt. Azonban a 28 osztott memória korlátolt mérete és a gyors végrehajtás iránti igény következtében szükség van arra, hogy a 22 gazdaprocesszor időről időre ilyen járulékos, a digitális jelfeldolgozó 26 processzor által szekvenciálisán végrehajtandó kódszegmenseket töltsön be. Mindaddig, amíg mind a digitális jelfeldolgozó 26 processzor, mind pedig a 22 gazdaprocesszor hozzáférhet a 28 osztott memóriához, fennállhat a találmánnyal kiküszöbölni kívánt probléma veszélye, nevezetesen az, hogy a kettős hozzáférés konfliktust okozhat egy ilyen társfeldolgozó környezetben.
Áttérve a 2. ábrára, azon a digitális jelfeldolgozó 26 processzor által hangok előállítása céljából hozzáfér5
HU 215 862 Β hető és végrehajtható jellemző kódszegmensek funkcionális tömbvázlatát tüntettük fel. Mellékesen megjegyezzük, hogy jóllehet audio felhasználásról beszélünk, találmányunk nem korlátozódik csupán erre, hanem számos más kódmodul felhasználására is alkalmas. Nyilvánvaló továbbá, hogy a 2. ábra 80 kódszegmensével megvalósított egyedi funkció, amelyet a digitális jelfeldolgozó 26 processzor végrehajt, lényegében bármilyen funkció lehet, jóllehet a bemutatott példában az ismertetésre kerülő funkciók általában hangok létrehozására vonatkoznak. Digitális jelfeldolgozó 26 processzoros hangkeltés esetében, mint amilyen egy zenei szintetizátor digitális jelfeldolgozó 26 processzoros emulálása, szokásos, hogy olyan alap építőegységeket vagy kódszegmenseket használnak, mint például a 2. ábra 80 kódszegmense, amely alegységeket, például 82 oszcillátort, 84 szűrőt, 86 feszültségvezéreit erősítőt, és számos további 90-94 operátort tartalmaz, amelyek különböző módon köthetők össze a kívánt különböző hangzások létrehozására. Ezek a modulok főleg az 1970-es évek zenei szintetizátoraiban voltak megtalálhatók, ahol a kívánság szerinti összeköttetést, mint már említettük, dugaszolható átkötések vagy vezetékek, vagy más, erre a célra alkalmas kapcsolóeszközök biztosították. Az ilyen összetett funkciók digitális jelfeldolgozó 26 processzorral való végrehajtása során számos alkalmazásnál szükség lehet a rendszer valós idejű újrakonfigurálására. Ismét ezt a zenei alkalmazást mintául véve, szükség lehet a zenei szintetizátor olyan digitális jelfeldolgozó 26 processzoros implementálására, ahol a szintetizátornak alkalmasnak kell lennie valós idejű újrakonfigurálásra annak érdekében, hogy „politimbrális” legyen, azaz lehetővé tegye különböző hangok azonos időben történő generálását. A 2. ábrán feltüntetett 96 vonal azt jelzi, hogy egy adott modulhoz hangkeltéshez szükséges néhány funkciót, például a 96 vonal feletti funkciókat, a kódot a 28 osztott memóriában eltárolt 80 kódszegmens funkcióinak megfelelő módon végrehajtó digitális jelfeldolgozó 26 processzor is tartalmazhatja.
A 96 vonal alatti járulékos feladatokat, például a 90-94 operátorokat a 22 gazdaprocesszor hajthatja végre. A 96 vonal fölötti feladatok, funkciók azok, amelyek gyors szekvenciális végrehajtást kívánnak, tehát ahol az almodulok, például a 82 oszcillátor, a 84 szűrő, a 86 feszültségvezéreit erősítő kódszegmenseit gyorsan, láncoltán, egymás után kell végrehajtani, hogy a kívánt 88 digitális kimenetet kapjuk, amelyet hallható analóg audiokimenetté tudunk aztán alakítani. A 80 kódszegmensben összefogott kódszegmensgyűjteményen végighaladó ciklus az audio digitalizálási vagy mintavételezési frekvencián, például 44 kHz-en történhet, azaz a 80 kódszegmenst a 16 mikrofonnal megvalósított audioforrásból származó audiojelhez generált minden egyes mintához teljes egészében végre kell hajtani.
Ezzel ellentétben a 2. ábrán a 96 vonal alatt feltüntetettjárulékos kódszegmenseket lényegesen alacsonyabb ütemben, például 100-300 Hz frekvenciával lehet végrehajtani, amit így például a 22 gazdaprocesszor is elvégezhet. Ilyen, a 22 gazdaprocesszor által végrehajtott
90, 92, 94 operátorok például amplitúdó burkológörbék lehetnek, amelyeket a 22 gazdaprocesszor ugyanakkor hajt végre, amikor a digitális jelfeldolgozó 26 processzor a 80 kódszegmens utasításait hajtja végre. A 80 kódszegmens által megkívánt gyors végrehajtás mellett a digitális jelfeldolgozó 26 processzor által végrehajtott kódmennyiség határolásának további oka a digitális jelfeldolgozó 26 processzorral társított 28 osztott memória természetéből fakad, nevezetesen, hogy ez a memóriatípus méretében a 12 számítógépben normális esetben lévő hagyományos memóriához képest igen kicsi. Az ismertetett rendszerekben a 28 osztott memória mérete általában 8 KByte. A kívánt multitimbrális hatás elérése céljából szekvenciálisán végrehajtott, például a
2. ábrán is feltüntetett kódmodulok különböző típusainak szükségességéből és a korlátozott memóriaméret kényszerűségéből könnyen belátható, hogy szükség lehet arra, hogy a 22 gazdaprocesszor időről időre a 28 osztott memóriába járulékosan betöltsön ilyen, például a 2. ábrán látható kódszegmenseket. Ezt a 3. ábra kapcsán ismertetjük.
A 3. ábrán olyan 98 kódszegmenst tüntettünk fel, amely a 2. ábrán látható 80 kódszegmensnek felelhet meg, beleértve a szükséges digitális jelfeldolgozó 26 processzorkódokat, például oszcillátorokat, szűrőket és hasonlókat, ami például egy kívánt klarinéthang előállításához szükséges. A 3. ábrán további 100, 102 kódszegmensek, amelyek hasonlóak a 98 kódszegmenshez, valamint az egy hangszer hangjának létrehozására alkalmas kód általános jelölése, például a 2. ábra 80 kódszegmensének jelölése is látható. A 3. ábra kapcsán megjegyezzük, hogy eltérő hangszer, például trombita vagy kürt hangjának előállításához, amelyet a 100 vagy 102 kódszegmensek képviselnek, eltérő 82 oszcillátorra, 84 szűrőre, vagy almodulokra, vagy azok kombinációjára van szükség. Ezeket a különböző 100, 98 és 102 kódszegmenseket sorban, jelképesen 104 nyíllal jelölt módon végrehajtó digitális jelfeldolgozó 26 processzornál az audioadatok a 24 adapterben válnak elérhetővé, ahogy azt a 2. ábra 88 digitális kimenetével jelöltük, és a kívánt politimbrális hatást érik el, amelyben a hallgató képes megkülönböztetni az egymással egyidőben szóló trombita, klarinét és kürt hangját a 98, 100 és 102 kódszegmenseknek megfelelően.
Ismételten megjegyezzük, hogy a 28 osztott memória véges mérete következtében néha nincs lehetőség az összes 100, 98, 102 kódszegmens betöltésére a 28 osztott memóriába. Ezt az esetet 106 kockával és 108 nyíllal jelöltük, jelezve, hogy a 28 osztott memória adott esetben csak olyan nagy, hogy a klarinét hangjával társított 98 kódszegmenst képes befogadni. Ennek megfelelően hamar kiderül, hogy szükség van arra, hogy a megfelelő időben a 22 gazdaprocesszor a járulékos kódszegmenseket, azaz a trombita 100 kódszegmensét, a kürt 102 kódszegmensét betöltse a 28 osztott memóriába. Annak biztosítására, hogy a 22 gazdaprocesszorból a járulékos kódszegmenseket a 28 osztott memóriába tölthessük, hogy azokat a digitális jelfeldolgozó 26 processzor valós időben végrehajtsa, a szükséges vagy kívánt járulékos kódszegmenst időközben, valós időben meg kell hatá6
HU 215 862 Β rozni, és így más paraméterek vagy megfontolások függvényében változtatni. Eme tulajdonság társfeldolgozó környezetben való biztosításának, tehát ezeknek a járulékos kódszegmenseknek a 28 osztott memóriába való betöltésének engedélyezésében a 22 gazdaprocesszor számára az egyik gond az, hogy ezt a 28 osztott memóriát egyidejűleg a digitális jelfeldolgozó 26 processzor is megkeresi.
Ennek megfelelően gond merül fel azzal, hogy a 22 gazdaprocesszomak aszinkron módon engedélyezzük a megfelelő járulékos kódszegmensek letöltését kívánság szerint a 28 osztott memóriába anélkül, hogy befolyásolnánk a 28 osztott memória hozzáférését a digitális jelfeldolgozó 26 processzor felől, tehát anélkül, hogy összeütközésbe kerülne a sorban rákövetkező kódszegmens digitális jelfeldolgozó 26 processzor általi végrehajtásával a 28 osztott memóriában. Egyszerű példaként: a digitális jelfeldolgozó 26 processzor a 2. ábra 82 oszcillátor leképzésének feladatával társított, a 28 osztott memóriában lévő kód végrehajtásának közepén lehet, amikor a 22 gazdaprocesszor aszinkron működése következtében utóbbi másik kódszegmenst kezd el a 28 osztott memóriába letölteni, ezzel felülírva a bennlévő, de még a digitális jelfeldolgozó 26 processzor által végre nem hajtott, a 82 oszcillátorfunkcióhoz kapcsolódó kódszegmenst.
Mielőtt az 5. ábra segítségével részletesen ismertetnénk az ismert és hagyományos kétszeres pufferelési eljárást, valamint a 6-8. ábrák kapcsán részletesebben is ismertetésre kerülő módszereket, bemutatunk egy az
1. ábra 12 számítógépében használható, megfelelő audio felvevő és lejátszó 24 adaptert, amely lehetővé teszi a kódszegmensek valós idejű dinamikus összekapcsolását a találmánynak megfelelően.
A 4. ábrán olyan 24 audioadapter funkcionális tömbvázlatát tüntettük fel, amely a találmány szerinti módszert alkalmazó digitális jelfeldolgozó 26 processzort tartalmaz. Mint korábban ismertettük, a 24 audioadapter könnyen megvalósítható az IBM Corporation „Audio Capture and Playback Adapter” elnevezésű, kereskedelmi forgalomban kapható egységével. Ebben a megvalósításban a digitális jelfeldolgozó 26 processzort a Texas Instruments, USA cég TMS 320C25 típusjelű processzora alkotja, de más, a célnak megfelelő digitális jelfeldolgozó áramkör is alkalmazható.
A 30 bemeneti/kimeneti busz jelképesen egyetlen vékony folyamatos vonallal feltüntetett 62 adatbuszon, 60 címbuszon és 58 vezérlőbuszon keresztül kapcsolódik a többi áramköri elemhez. A 62 adatbuszra 32 gazda parancsregiszter, 34 gazda állapotregiszter, 40 magas címbittel reteszelt számláló, 42 alacsony címbittel reteszelt számláló, magas adatbit kétirányú 44 retesz és alacsony adatbit kétirányú 46 retesz kapcsolódik, melyek kimenetére 48 osztott memória, digitális jelfeldolgozó 26 processzor, digitális jelfeldolgozó 36 vezérlőregiszter, digitális jelfeldolgozó 38 állapotregiszter és 66 memória választásdöntő áramkör van felfűzve. Utóbbi kimenetére 50 mintamemória, 52 digitál/analóg átalakító és 54 analóg/digitál átalakító csatlakozik. Az ábrán az 56 vezérlőlogika szaggatott vonallal bejelölt vezérlőbuszon keresztül össze van kötve egyrészt a felsorolt egységekkel, másrészt 68 analóg kimeneti fokozattal és 70 analóg bemeneti fokozattal, valamint 64 memória választásdöntő áramkörrel. A 64 memória választásdöntő áramkör az ábrán vastag folyamatos vonallal jelölt 60 címbuszon keresztül áll a digitális jelfeldolgozó 26 processzorral, valamint a 40 magas címbittel reteszelt számlálóval és a 42 alacsony címbittel reteszelt számlálóval összekötve. Az ábrán a különböző hangfrekvenciás, analóg és digitális jelek útvonalát jelképesen, különböző hullámvonallal jelöltükbe, hogy az a felsorolt csatlakozások és az egyes egységek, fokozatok között nyomon követhető legyen.
Mint látható, egy ezen az ábrán nem szereplő 22 gazdaprocesszor és a digitális jelfeldolgozó 26 processzor közötti csatlakozási felületet a 30 bemeneti/kimeneti busz alkotja. Szakember számára kézenfekvő, hogy a 30 bemeneti/kimeneti buszt a számítógépekből ismert és azokban használatos Micro Channel architektúrának vagy ISA architektúrának megfelelő buszok alkothatják. A 30 bemeneti/kimeneti busz segítségével a 22 gazdaprocesszor hozzáférhet a 32 gazda parancsregiszterhez és 34 gazda állapotregiszterhez. A 32 gazda parancsregisztert és a 34 gazda állapotregisztert a 22 gazdaprocesszor arra használja, hogy parancsokat adjon ki és felügyelje a 4. ábrán látható 24 audioadapter állapotát.
A 22 gazdaprocesszor a 30 bemeneti/kimeneti buszt arra is használhatja, hogy hozzáférjen a 40 magas címbittel reteszelt számlálóhoz és a 42 alacsony címbittel reteszelt számlálóhoz, amelyeket a 22 gazdaprocesszor arra használ, hogy 48 osztott memóriához hozzáféljen a 4. ábra 24 audioadapterén belül. A 48 osztott memória célszerűen 8Kxl6 gyors statikus RAM, amely olyan értelemben van „megosztva”, hogy mind a 22 gazdaprocesszor, mind a digitális jelfeldolgozó 26 processzor kapcsolatba léphet vele. Mint részletesebben is ismertetésre kerül, annak megakadályozására, hogy a 22 gazdaprocesszor és a digitális jelfeldolgozó 26 processzor a 48 osztott memóriát egyidejűleg szólítsa meg, külön memória választásdöntő áramkört alkalmazunk.
Mint látható, a digitális jelfeldolgozó 26 processzornak előnyösen digitális jelfeldolgozó 36 vezérlőregisztere és digitális jelfeldolgozó 38 állapotregisztere van, amelyeket a 32 gazda parancsregiszterhez és a 34 gazda állapotregiszterhez hasonló módon használ, hogy engedélyezze a digitális jelfeldolgozó 26 processzor számára a parancsok kiadását, valamint a 24 audioadapteren belüli különböző eszközök állapotának felügyeletét.
A 22 gazdaprocesszor arra is felhasználható, hogy adatokat hívjon elő, illetve töltsön be a 30 bemeneti/kimeneti buszon keresztül a 48 osztott memóriába, a szakterületen jól ismert módon, magas adatbit kétirányú 44 retesz és alacsony adatbit kétirányú 46 retesz segítségével.
Az 50 mintamemóriát ugyancsak bejelöltük a 4. ábrán bemutatott adapterben. Az 50 mintamemória célszerűen 2Kxl6 statikus RAM, amelyet a digitális jelfeldolgozó 26 processzor a lejátszandó kimenő mintákhoz és a digitalizált audiojelek bejövő mintáihoz használ. Az 50 mintamemóriát ideiglenes pufferként is használ7
HU 215 862 Β hatjuk, hogy abban tároljuk a dekomprimált digitális audiomintákat és midi zenei mintákat a közös kiadásig. Szakember számára nyilvánvaló, hogy a digitális audioadatok dekomprimálásával és szintetizált zene midi fájlokból való létrehozásával előre meghatározott mennyiségű adattípust tárolhatunk az 50 mintamemóriában, és a kétfajta kimenetet szükség esetén igen egyszerűen kombinálhatjuk.
Az ábrán a 24 audioadapteren belül 56 vezérlőlogikát is feltüntettük. Az 56 vezérlőlogika célszerűen olyan logikai blokk, amely más feladatok között egy digitális jelfeldolgozó 26 processzor megszakításkérését követően megszakítás jeleket ad a 22 gazdaprocesszor számára, vezérli a bemeneti választókapcsolót, és olvasási, írási és engedélyezési vezérlőjeleket ad a különböző reteszek és memóriaeszközök részére a 24 audioadapteren belül. Az 56 vezérlőlogika ezeket a feladatokat célszerűen 58 vezérlőbusz segítségével végzi el.
A rajzon ezenkívül 60 címbusz is látható, és a találmány szerinti kapcsolási elrendezés rajzon bemutatott kiviteli alakjánál célszerűen fel is használjuk annak érdekében, hogy lehetővé tegyük a rendszeren belül a különböző minták és fájlok címeinek és a rendszer megfelelő eszközeinek összekapcsolását. A rajzon látható még 62 adatbusz is, amely a bemutatott 24 audioadapteren belül a különböző eszközök közötti adatforgalmat bonyolítja le.
Mint a fentiekben kifejtettük, az 56 vezérlőlogika 64 és 66 memória választásdöntő áramköröket is használ, hogy szabályozza a 48 osztott memóriához és az 50 mintamemóriához való hozzáférést, és ezzel biztosítsa, hogy a 22 gazdaprocesszor és a digitális jelfeldolgozó 26 processzor ne ugyanabban az időpontban címezze meg valamelyik memóriát. Ez a szakmai körökben jól ismert módszer szükséges ahhoz, hogy meggátoljuk az ismert és félt memória-patthelyzet (deadlock) vagy hasonló jelenségek fellépését.
Végül, az ábrán 52 digitál/analóg átalakítót is feltüntettük, amelyet a dekomprimált digitális audio- vagy digitális midi szintetizált zenei jeleknek megfelelő analóg jelre való átalakítására használunk. Az 52 digitál/analóg átalakító kimenete 68 analóg kimeneti fokozathoz kapcsolódik, amely célszerűen a szükséges szűrő és erősítő áramköröket tartalmazza. Hasonló módon a 4. ábrán látható 24 audioadaptert arra is használhatjuk, hogy audiojeleket digitalizáljunk és tároljunk ezeknek a jeleknek 70 analóg bemeneti fokozatra való rákapcsolásával, majd az 54 analóg/digitál átalakítóra való juttatásával. Szakember számára világos, hogy egy ilyen eszköz lehetővé teszi analóg audiojelek felvételét és tárolását, digitalizálás és a jelhez kapcsoló digitális értékek tárolása révén.
Miután az 1. ábrán bemutatott rendszerben használt 24 audioadaptert részletesebben is bemutattuk, röviden megmagyarázzuk, hogy az ismert és hagyományos kétszeres pufferelési módszerek miért nem hatásosak az 5. ábra kapcsán bemutatott probléma megoldásában. Mint már jeleztük, a kétszeres pufferelés hagyományos „pingpong” módszere, azaz az egyik pufferbe való beírás a másik puffer kiolvasása alatt, nem működik a kódszegmensek valós idejű dinamikus összekapcsolását megvalósító találmány szerinti kapcsolási elrendezésben és eljárásban. Mint az 5. ábrán látható, a hagyományos számítástechnikai tudományos gyakorlatnak megfelelően azokban az esetekben, ha adatokat vagy kódokat kell fogadni és tárolni azalatt, mialatt egy feldolgozó rendszer megszakítás nélkül folytatja a kód végrehajtását, ismert módszer, hogy egy 110 memóriarendszerben két 112, 114 puffért hozunk létre. Ugyancsak ismert, hogy ezekre mutató 116, 118, 120 mutatókat hozunk létre, amelyek a szóban forgó hely kezdőcímére mutatnak. így például a 116 mutató a 112 pufferben lévő kód kezdetére mutat, amely éppen végrehajtás alatt áll. Ha a 22 gazdaprocesszomak a bal oldali 112 pufferben lévő kód által nem támogatott járulékos funkciók végrehajtására is szüksége van, megfelelő kérelemre a 112 pufferben lévő kód végrehajtása közben a 22 gazdaprocesszor megkezdheti a jobb oldali 114 puffer feltöltését. A 114 puffer feltöltésének befejezése után az aktuális 116 mutató megfordul, ahogy az a 118 mutató esetében látható, és például a következő kódvégrehajtási ciklus során a 118 mutató a 114 pufferben lévő kód kezdőcímére mutatna, amely a végrehajtható új funkciókat tartalmazza, mire a végrehajtás megkezdődne a jobb oldali 114 pufferben lévő új kód újbóli elvégzésével. A következő alkalommal, amikor a 22 gazdaprocesszomak újból olyan járulékos funkciókra van szüksége, amelyeket a 114 pufferben lévő kódszegmens kódjai nem tartalmaznak, az előzőleg ismertetett lépéshez hasonló módon a 22 gazdaprocesszor megkezdené a bal oldali 112 puffer feltöltését. Az 5. ábra középső részén látható esethez hasonlóan a bal oldali 112 puffer járulékos funkciók megvalósításához szükséges kóddal való feltöltésének befejezése után a 120 mutató az 5. ábra alsó részén látható módon újból balra, a bal oldali 112 pufferben lévő kód kezdőcímére mutatna, lehetővé téve ezzel a 22 gazdaprocesszor számára a 120 mutató által meghatározott című kód közvetlen végrehajtását.
Az imént ismertetett hagyományos kétszeres puffereléssel azonban a találmány szerinti, a 22 gazdaprocesszort és a digitális jelfeldolgozó 26 processzort tartalmazó társfeldolgozó környezetben felmerül egy probléma. A digitális jelfeldolgozó 26 processzor nevezetesen éppen a bal oldali 112 pufferben lévő kód végrehajtásának közepén lehet, miközben már a jobb oldali 114 puffer fel van töltve, amikor a 22 gazdaprocesszor az első kérelmet igen gyorsan követve, egy második kérelmet ad ki egy második új modulért, azaz a 22 gazdaprocesszor kétszer, gyors egymásutánban kapott egy-egy kérelmet a 112, 114 pufferek felfrissítésére. Ilyen esetben a 22 gazdaprocesszor megkezdené az új funkcióhoz a kód beírását a bal oldali 112 pufferbe, ezzel felülírva a még végre nem hajtott kódot a bal oldali 112 pufferben. Az említett okból a találmány szerinti társfeldolgozó környezetben szükség van ennek az esedékességnek a tervezésére. Mint a 7. ábrán látható, a találmány így részben érinti a bemutatott helyzetet, amennyiben 140 mutató az éppen végrehajtás alatt álló 112 pufferben lévő kódra mutat, egy másik 142 mutató
HU 215 862 Β pedig a 114 pufferben lévő új kódra mutat. Miután a 22 gazdaprocesszor a 112 pufferben lévő kódot elhagyta, hogy megkezdje a 114 pufferben lévő új kód végrehajtását (talán éppen a 112 pufferben lévő kód végrehajtásának közepén), a 112 puffer feltöltésére vonatkozó következő kérelem a 112 pufferben lévő, még végrehajtásra váró kódot felülírhatja egy, már ezeket az új funkciókat is magában foglaló kóddal.
Mielőtt bemutatnánk a 6A.-6D. ábrák kapcsán a találmány szerinti rendszer működését, az operációs rendszert, például az OS/2 operációs rendszert használó egyprocesszoros rendszerekkel kapcsolatosan jól ismert „dinamikus összekapcsolás” fogalmát szeretnénk tisztázni. Ezekben a rendszerekben a kódokat végrehajtó processzor ugyanaz a processzor, amelyik betölti a kódokat, így ennek megfelelően nincs lehetőség a 112, 114 pufferekben lévő kódkészletek közötti ütközésre. Egyetlen processzort és egyetlen feldolgozást tartalmazó rendszerekben, ha az idő elérkezett a processzor számára egy új szubrutin indítására, hívást irányít egy overlay-hez, dynalink manager-hez, vagy hasonló kódmodult betöltő programrészhez, amely a kért kódmodult betölti, majd a végrehajtást visszaadja a hívó processzornak. Ez lényegében semmi más, mint egy szubrutin hívás, amelynek során egy címet kiválasztunk, arra rálépünk, majd visszatérünk a hívó pontra.
Ilyen rendszerben, jóllehet a kódmodulok összekapcsolása dinamikusan, valós időben történhet (mert mind mondottuk, csupán egyetlen végrehajtó és kódbetöltő processzor van, akkor is, ha a betöltendő és végrehajtandó modulok az időben szükség és kívánalom szerint dinamikusan változhatnak), ebben az egyprocesszoros rendszerben nem következhet be ilyen konfliktus a kódmodulok végrehajtása során. Ezzel ellentétes a találmány szerinti társfeldolgozó rendszer, amelyben mind a 22 gazdaprocesszor, mind a digitális jelfeldolgozó 26 processzor egyidejűleg végrehajthat kódokat és hozzáférhet a 24 adapter közös, 28 osztott memóriájához.
Áttérve a 6A.-6D. ábrákra, azokon a találmány szerinti rendszerben használt mutatórendszer látható a kódszegmensek valós idejű, dinamikus összekapcsolásának megvalósítása során. Mint a 6A.-6D. ábrák sorrendjéből látható, az első 6A. ábra a szekvenciának azt a kezdetét mutatja, amelyben a 24 adapter a bal oldali 112 pufferben lévő kódot hajtja végre. Ebben a fázisban minden alkalommal, amikor a 24 adapter ciklikusan végighalad a kódon, aktuális 120c mutatót talál, amely a 112 pufferben lévő kód végrehajtandó kezdőcímére mutat. A 22 gazdaprocesszor természetesen aszinkron módon hajtja végre a vele társított kódot. Amint a 22 gazdaprocesszor végrehajtja a kódot és úgy véli, pillanatnyilag a digitális jelfeldolgozó 26 processzor által végrehajtott funkciótól eltérő funkcióra van szükség (például, ha a 22 gazdaprocesszor szükségét érzi egy modul, például a 2. ábrán bemutatott modul futtatását a digitális jelfeldolgozó 26 processzoron keresztül, amely modul éppen eltér a 112 pufferben lévő kód eredményeképpen éppen végrehajtóitól), a 22 gazdaprocesszor előbb másolatot készít a címről (azaz arról a címről, amelyre az aktuális 120c mutató éppen mutat). A 22 gazdaprocesszor természetesen másolatot készíthet az aktuális 120c mutatóhoz társított címről, mert a 120c mutatók a digitális jelfeldolgozó 26 processzor és a 22 gazdaprocesszor által osztottan használt ismert közös címen helyezkednek el, hiszen sorosan csatolt társfeldolgozó rendszerről van szó.
A 6A. ábrával kapcsolatosan azt is meg kell jegyeznünk, hogy a „következő” 122n mutató a 110 memóriarendszerben található. Ez a „következő” 122n mutató olyan mutató, amely a digitális jelfeldolgozó 26 processzor számára, amint az végighaladt az adott 112 vagy 114 pufferben lévő kódon, pontosan megadja azt a következő címet, amelyen a következő alkalommal, tehát amikor a 110 memóriarendszer felső kezdéspontján újból keresztülhalad, meg kell kezdenie a kód végrehajtását. így a 6A. ábrán bemutatott esetben, amikor a digitális jelfeldolgozó 26 processzor a 112 pufferben lévő kód végrehajtásának közepén tart, a következő 122n mutató balra fog mutatni, jelezve, hogy akkor, amikor a végrehajtást folytatni kell a 112 pufferben és vissza kell térni a kiindulási helyre, a 112 puffer végrehajtását kell folytatni.
Ha a 22 gazdaprocesszor aszinkron módon végrehajtva saját kódját meghatározza, hogy a következő modulra van szükség a digitális jelfeldolgozó 26 processzor számára a végrehajtás folytatásához, először a 120c mutatót rámásolja a 133n mutatóra (lásd 6B. ábra). Ez után megkezdi a jobb oldali 114 puffer feltöltését az új modullal. Megjegyezzük, hogy mindaddig, amíg a 22 gazdaprocesszor folytatja a 114 puffer feltöltését az új funkciót vagy modult tartalmazó kóddal, az aktuális 120c mutató és annak másolatát alkotó 133n mutató továbbra is a bal oldali 112 puffer kezdőcímére fog mutatni, ily módon informálva a digitális jelfeldolgozó 26 processzort, hogy ezt a bal oldali 112 pufferben lévő kódot kell végrehajtania. Más szavakkal, az aktuális 120c vagy 133n mutató szolgál a 22 gazdaprocesszor informálására, hogy az ne írjon kódot a bal oldali 112 pufferbe, mert a digitális jelfeldolgozó 26 processzor még mindig ezt a kódot hajtja végre, azaz az aktuális mutató az éppen végrehajtás alatt álló digitális jelfeldolgozó 26 processzor kód kezdőcímére mutat.
Ha megnézzük a 6C. ábrát, miután a 22 gazdaprocesszor a 114 puffért teljes egészében feltöltötte, a 133n mutató megfordul (a 6C. és 6D. ábrán így 132n mutatóként látható). Ha a digitális jelfeldolgozó 26 processzor így végrehajtotta a 112 pufferben lévő kód maradékát és elérte a mutatókkal társított elágazási pontot, mint amilyen például a 110 memóriarendszer kezdőpontja, a 6C. ábrán látható következő 132n mutató, amelyet a digitális jelfeldolgozó 26 processzor olvas, rámutat a jobb oldali 114 pufferben lévő kódra. A digitális jelfeldolgozó 26 processzor ezt a 132n mutatót nem másolja az aktuális 134c mutatóra. Ennek megfelelően a 134c mutató a 22 gazdaprocesszort informálja, hogy ne íqon kódot további járulékos funkciók vagy modulok részére a jobb oldali 114 pufferbe, mert a digitális jelfeldolgozó 26 processzor most éppen azon végighaladva az abban lévő modul kódját hajtja végre. Az elmondottakból érthető, hogy az aktuális mutató mindig annak a puffemek
HU 215 862 Β a kezdőcímére mutat, amelyre a digitális jelfeldolgozó 26 processzor rákapcsolódik a pufferek valamelyikében lévő kódon előző alkalommal való végighaladása során. Ezzel ellentétben a következő mutató annak a puffemek a kezdőcímére mutat, ahol a digitális jelfeldolgozó 26 processzornak a következő alkalommal meg kell kezdeni a kód végrehajtását a 110 memóriarendszeren való végighaladása során.
Az elmondottak még világosabbá válnak a 8. ábra megtekintésével, amely lényegében a találmány szerinti rendszerrel végrehajtott lépések folyamatábráját tünteti fel, a kódszegmensek valós idejű dinamikus összekapcsolásának biztosítására sorosan csatolt társprocesszoros rendszerben. A folyamatábrából és az ahhoz tartozó leírásból megfelelő kódok állíthatók elő a kívánt lépések megvalósítására a találmány értelmében. Az első 150 lépésben kizárólagosan kiválasztunk egy kezdőpontot, ahonnan a digitális jelfeldolgozó 26 processzor megkezdi a 112 pufferben lévő első digitális jelfeldolgozó 26 processzormodul végrehajtását. A 152 lépésben a 6A. ábra aktuális 120c mutatója ebben a bal oldali 112 pufferben lévő digitális jelfeldolgozó 26 processzor kód kezdőcímére mutat. A 154 lépésben látható, hogy a 6A. ábra következő 122n mutatója ugyancsak a bal oldali 112 pufferre mutat. Az aszinkron rendszer néhány pontján, amelyben a 22 gazdaprocesszor saját kódját hajtja végre, a gazdaprogram jelzi, hogy egy második, a pillanatnyilag a 112 pufferben lévő és éppen végrehajtás alatt álló modultól eltérő, második digitális jelfeldolgozó modult kell végrehajtani. Ez látható a 8. ábra 156 lépésében.
Ebben a lépésben a 22 gazdaprocesszor a bal oldali 112 pufferre mutató aktuális 120c mutatót olvasva tudja, hogy a digitális jelfeldolgozó 26 processzor éppen folytatja a 112 pufferben lévő kód végrehajtását. A 22 gazdaprocesszor az aktuális 120c mutatót 133n mutatóként a következő mutatóra másolja 160 lépésben, amely ugyancsak a 112 pufferre mutat, majd megkezdi a 114 puffer feltöltését az új modulok kódjával (ez a 158-162 lépésben látható).
Ha ily módon a 114 puffért feltöltöttük, mint az a 164 lépésben látható, a 6B. ábra 133n következő mutatója megfordul, amint az a 6C. ábrán látható, hogy 132n következő mutatóvá váljon, amely most az így teljesen feltöltött jobb oldali 114 pufferre mutat. Ez, mint korábban említettük, jelzi, hogy a következő alkalommal a digitális jelfeldolgozó 26 processzornak a 112 pufferben lévő kódon kell azt végrehajtva végighaladnia, mert mióta a 114 puffer fel van töltve (és a következő mutató, megfordulva mint 132n mutató, a jobb oldali 114 pufferre mutat), a digitális jelfeldolgozó 26 processzor folytathatja a 114 pufferben lévő kód végrehajtását a pufferekben lévő kódokon való végighaladása során. Ezeket a műveleteket 166,167 lépések jelölik.
Végül 168 lépés jelzi, hogy egy következő, egy új járulékos és a digitális jelfeldolgozó 26 processzor által végrehajtandó modulra vonatkozó kérelem hatására az imént leírt folyamat tükörképe vagy ellentéte folytatódik, ahol a 22 gazdaprocesszor megkezdi a 112 puffer újrafeltöltését, míg a digitális jelfeldolgozó 26 processzor a 114 pufferben lévő kódokat hajtja végre. Ha a 112 puffer feltöltése befejeződött, és a digitális jelfeldolgozó 26 processzor befejezte a 114 pufferben lévő kódok végrehajtását, a digitális jelfeldolgozó 26 processzor az előbb ismertetett módon megforduló mutatóval összhangban újból megkezdi a 112 pufferben lévő kód végrehajtását.
Jóllehet a találmányt egy általunk előnyösnek tartott kiviteli alak segítségével ismertettük, szakember számára nyilvánvaló, hogy ennek kapcsán a kitűzött feladat számos változatban megvalósítható anélkül, hogy a találmány lényegétől és az igényelt oltalmi körtől eltérnénk.
Claims (7)
- SZABADALMI IGÉNYPONTOK1. Rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, első processzorral, második processzorral, továbbá azok által hozzáférhető osztott memóriával, azzal jellemezve, hogy az osztott memória (28, 48) első puffért (112) és második puffért (114) tartalmaz, továbbá a rendszer a második processzor (22) által végrehajtható kódot az osztott memóriában (28, 48) az első processzoron (26) keresztül periodikusan felváltva felfrissítő eszközt tartalmaz, ahol egy első helyzetben az első pufferben (112) lévő kód első részét az első processzor (26) frissíti fel, míg a kód második részét a második processzor (22) a második pufferből (114) hajtja végre, és egy második helyzetben a kód harmadik részét a második pufferben (114) az első processzor (26) frissíti fel, míg a kód első részét a második processzor (22) az első pufferből (112) hajtja végre, valamint a kód pillanatnyi, első vagy második helyzetét jelző (120, 122) mutatóeszközt tartalmaz.
- 2. Az 1. igénypont szerinti rendszer, azzal jellemezve, hogy az első processzor (26) digitális jelfeldolgozó processzor (26) vagy mikroprocesszor.
- 3. Eljárás kódszegmensek egymáshoz kapcsolására aszinkron többprocesszoros számítógéprendszerben, első és második puffért tartalmazó közös osztott memóriához való hozzáféréssel, amelynek során az osztott memóriában az első processzorral egy első kódot hajtunk végre, miközben aszinkron módon egy második processzorral egy második kódmodult tartalmazó kódszegmenseket töltünk be és kapcsolunk össze egy második processzorral, és a második kódmodult az első processzorral végrehajtjuk, miközben aszinkron módon az osztott memóriába a második processzorral egy harmadik kódmodult tartalmazó kódszegmenst töltünk be és kapcsolunk egymáshoz, azzal jellemezve, hogy az első processzorral (26) az első pufferből (112) és a második pufferből (114) váltakozva hajtjuk végre a kódokat, a második processzorral (22) legalább egy kódmodult akkor töltünk be a második pufferbe (114) és kapcsolunk össze, amikor az első processzorral (26) az első pufferből (112) a kódot végrehajtjuk, továbbá a második processzorral (22) legalább egy kódmodult akkor töltünk be az első pufferbe (112) és kapcsolunk össze, amikor az első processzorral (26) a második pufferben (114) lévő kódot hajtjuk végre, és az első processzorralHU 215 862 Β (26) éppen végrehajtott kódot tartalmazó puffemek megfelelő címhelyhez egy első mutató (120) változót rendelünk, és egy második mutató (122) változót rendelünk a maradék puffemek megfelelő címhelyhez, miután azt a második processzorral (22) a második processzor (22) által betöltött és egymáshoz kapcsolt, legalább egy kódmodult tartalmazó kódszegmenssel felfrissítettük, miközben az első processzorral (26) a kódot hajtjuk végre.
- 4. A 3. igénypont szerinti eljárás, azzal jellemezve, hogy az első kódmodult a digitális jelfeldolgozó processzor (26) által végrehajtott kódnak feleltetjük meg, és ezzel a digitális jelfeldolgozó processzort (26) egy első hangnak megfelelő akusztikus adat létrehozására késztetjük.
- 5. A 4. igénypont szerinti eljárás, azzal jellemezve, hogy a második kódmodult a digitális jelfeldolgozó processzor (26) által végrehajtott kódnak feleltetjük meg, és ezzel a digitális jelfeldolgozó processzort (26) egy második hangnak megfelelő akusztikus adat előállítására késztetjük.
- 6. Az 5. igénypont szerinti eljárás, azzal jellemezve, hogy a digitális jelfeldolgozó processzorral (26) az első kódmodult és a második kódmodult az első pufferből (112) és a második pufferből (114) felváltva, olyan sebességgel hajtjuk végre, amelynél az első hangot és a második hangot egyidejűleg szólaltatjuk meg.
- 7. Eljárás memória megosztására első processzort és második processzort, továbbá első puffért és második puffért tartalmazó processzorrendszerben, azzal jellemezve, hogy egy első mutatót (120) és egy második mutatót (122) hozunk létre, amelyekkel jelezzük, hogy a második processzorral (22) az első puffért (112) vagy a második puffért (114) hajtjuk-e éppen végre, és hogy az első processzorral (26) az első puffer (112) és a második puffer (114) közül melyiket frissítjük éppen fel, továbbá a második processzor (22) által végrehajtható kódot az első pufferben (112) eltároljuk, majd az első mutatót (120) és a második mutatót (122) inicializáljuk, hogy a végrehajtható kódot tartalmazó első pufferre (112) mutasson, és észleljük, ha a második processzor (22) a kód végrehajtását igényli, majd a második processzorral (22) az észlelés alapján olvassuk a második mutatót (122), majd a második processzorral (22) a második mutatót (122) az első mutatóra (120) másoljuk, ez után a második processzorral (22) ráállunk az első puffer (112) és a második puffer (114) közül az első mutató (120) által kijelölt pufferre, és az első processzorral (26) újra rácsatlakozunk az első puffer (112) és a második puffer (114) közül a megfelelő pufferre, ezt követően a második processzorral (22) az újracsatlakozással egyidejűleg az első puffer (112) és a második puffer (114) közül a másikban lévő kódot végrehajtjuk, ez után a második mutatót (122) az első processzorral (26) azonossá tesszük az első mutatóval (120), majd az első processzort (26) újra rácsatlakoztatjuk az első puffer (112) és a második puffer (114) közül az első mutató (120) által kijelölttől eltérő pufferre, végül a második mutatót (122) az első puffer (112) és a második puffer (114) közül a másikra irányítjuk.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60812690A | 1990-11-01 | 1990-11-01 |
Publications (3)
Publication Number | Publication Date |
---|---|
HU9301263D0 HU9301263D0 (en) | 1993-08-30 |
HUT65534A HUT65534A (en) | 1994-06-28 |
HU215862B true HU215862B (hu) | 1999-03-29 |
Family
ID=24435152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
HU9301263A HU215862B (hu) | 1990-11-01 | 1991-10-29 | Rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, továbbá eljárás kódszegmensek egymáshoz kapcsolására, valamint eljárás memória megosztására |
Country Status (10)
Country | Link |
---|---|
US (1) | US5539896A (hu) |
EP (1) | EP0483970A1 (hu) |
JP (1) | JP3203701B2 (hu) |
CZ (1) | CZ9300787A3 (hu) |
HU (1) | HU215862B (hu) |
IL (1) | IL99744A (hu) |
PL (1) | PL166975B1 (hu) |
SK (1) | SK41393A3 (hu) |
WO (1) | WO1992008192A1 (hu) |
ZA (1) | ZA918427B (hu) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253275A (en) | 1991-01-07 | 1993-10-12 | H. Lee Browne | Audio and video transmission and receiving system |
AU4219693A (en) * | 1992-09-30 | 1994-04-14 | Apple Computer, Inc. | Inter-task buffer and connections |
GB2272085A (en) * | 1992-10-30 | 1994-05-04 | Tao Systems Ltd | Data processing system and operating system. |
US5949891A (en) * | 1993-11-24 | 1999-09-07 | Intel Corporation | Filtering audio signals from a combined microphone/speaker earpiece |
JP3171361B2 (ja) * | 1994-05-06 | 2001-05-28 | ヤマハ株式会社 | Dspプログラミング装置 |
US6163793A (en) * | 1994-08-05 | 2000-12-19 | Intel Corporation | Method and apparatus for using a driver program executing on a host processor to control the execution of code on an auxiliary processor |
US5619731A (en) * | 1994-09-23 | 1997-04-08 | Ardent Teleproductions, Inc. | Interactive music CD and data |
US5685005A (en) * | 1994-10-04 | 1997-11-04 | Analog Devices, Inc. | Digital signal processor configured for multiprocessing |
US5671446A (en) * | 1995-03-16 | 1997-09-23 | Apple Computer, Inc. | Method and apparatus for atomically accessing a queue in a memory structure where LIFO is converted to FIFO |
US5696990A (en) * | 1995-05-15 | 1997-12-09 | Nvidia Corporation | Method and apparatus for providing improved flow control for input/output operations in a computer system having a FIFO circuit and an overflow storage area |
GB2301003B (en) * | 1995-05-19 | 2000-03-01 | Sony Uk Ltd | Audio mixing console |
US6078945A (en) * | 1995-06-21 | 2000-06-20 | Tao Group Limited | Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques |
US5799314A (en) * | 1995-06-30 | 1998-08-25 | Sun Microsystems, Inc. | System and method of controlling mapping of data buffers for heterogenous programs in digital computer system |
US5909702A (en) * | 1995-09-29 | 1999-06-01 | Intel Corporation | Memory address translations for programs code execution/relocation |
JP3087638B2 (ja) * | 1995-11-30 | 2000-09-11 | ヤマハ株式会社 | 音楽情報処理システム |
US5819067A (en) * | 1996-02-23 | 1998-10-06 | Advanced Micro Devices, Inc. | Computer system configured to translate a computer program into a second computer program prior to executing the computer program |
US6031916A (en) * | 1996-02-28 | 2000-02-29 | Kabushiki Kaisha Kawai Gakki Seisakusho | Sound effect adding device using DSP |
US5763801A (en) * | 1996-03-25 | 1998-06-09 | Advanced Micro Devices, Inc. | Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory |
US5809342A (en) * | 1996-03-25 | 1998-09-15 | Advanced Micro Devices, Inc. | Computer system and method for generating delay-based audio effects in a wavetable music synthesizer which stores wavetable data in system memory |
US5890013A (en) * | 1996-09-30 | 1999-03-30 | Intel Corporation | Paged memory architecture for a single chip multi-processor with physical memory pages that are swapped without latency |
JP3747584B2 (ja) * | 1996-10-18 | 2006-02-22 | ヤマハ株式会社 | 端末装置の機能拡張方法及びホストコンピュータ並びに端末装置 |
US6453409B1 (en) * | 1996-11-07 | 2002-09-17 | Yamaha Corporation | Digital signal processing system |
WO2000000887A1 (en) * | 1998-06-30 | 2000-01-06 | Intergraph Corporation | Method and apparatus for transporting information to a graphic accelerator card |
US6308253B1 (en) * | 1999-03-31 | 2001-10-23 | Sony Corporation | RISC CPU instructions particularly suited for decoding digital signal processing applications |
FR2809508B1 (fr) * | 2000-05-23 | 2002-08-30 | Thomson Csf | Systeme et methode de gestion d'une architecture multi-ressources |
CA2355021C (en) | 2000-08-29 | 2004-11-02 | Hoya Corporation | Optical element having antireflection film |
JP2002207708A (ja) * | 2001-01-12 | 2002-07-26 | Mitsubishi Electric Corp | 演算装置 |
US20030074656A1 (en) * | 2001-09-14 | 2003-04-17 | Yoshiaki Irino | Program execution apparatus and method, computer program for performing the program execution method, image forming system, and address solution method |
US7174548B2 (en) * | 2001-10-15 | 2007-02-06 | Intel Corporation | Managing firmware download |
US7546451B1 (en) * | 2002-06-19 | 2009-06-09 | Finisar Corporation | Continuously providing instructions to a programmable device |
US6996699B2 (en) * | 2002-09-10 | 2006-02-07 | Microsoft Corporation | Secondary processor execution kernel framework |
DE60309923T2 (de) * | 2002-11-05 | 2007-10-18 | Koninklijke Philips Electronics N.V. | Datenverarbeitungsvorrichtung mit adressenumlenkung als reaktion auf periodische adressenmuster |
JP4542308B2 (ja) * | 2002-12-16 | 2010-09-15 | 株式会社ソニー・コンピュータエンタテインメント | 信号処理用デバイス及び情報処理機器 |
JP4837247B2 (ja) * | 2003-09-24 | 2011-12-14 | パナソニック株式会社 | プロセッサ |
US7487498B2 (en) * | 2003-11-12 | 2009-02-03 | Microsoft Corporation | Strategy for referencing code resources |
US7266804B2 (en) | 2004-02-20 | 2007-09-04 | Microsoft Corporation | Strategy for selectively making non-public resources of one assembly visible to another |
US7610200B2 (en) * | 2004-08-30 | 2009-10-27 | Lsi Corporation | System and method for controlling sound data |
US8489783B2 (en) * | 2007-01-03 | 2013-07-16 | Apple Inc. | Multi buffer asynchronous scheme for processing incoming information |
JP5099133B2 (ja) * | 2007-06-20 | 2012-12-12 | 富士通株式会社 | 処理装置 |
US8041848B2 (en) * | 2008-08-04 | 2011-10-18 | Apple Inc. | Media processing method and device |
US9250858B2 (en) * | 2013-02-20 | 2016-02-02 | International Business Machines Corporation | Dual-buffer serialization and consumption of variable-length data records produced by multiple parallel threads |
EP2840503A1 (de) * | 2013-08-22 | 2015-02-25 | Continental Automotive GmbH | Verfahren zum Betreiben eines Pufferspeichers einer Datenverarbeitungsanlage und Datenverarbeitungsanlage |
US20150363437A1 (en) * | 2014-06-17 | 2015-12-17 | Ims Health Incorporated | Data collection and cleaning at source |
US11716264B2 (en) * | 2018-08-13 | 2023-08-01 | Cisco Technology, Inc. | In situ triggered function as a service within a service mesh |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4298954A (en) * | 1979-04-30 | 1981-11-03 | International Business Machines Corporation | Alternating data buffers when one buffer is empty and another buffer is variably full of data |
US4333143A (en) * | 1979-11-19 | 1982-06-01 | Texas Instruments | Input process sequence controller |
JPS57191764A (en) * | 1981-05-21 | 1982-11-25 | Nec Corp | Storage device |
US4562436A (en) * | 1982-07-16 | 1985-12-31 | At&T Bell Laboratories | Data communication network |
US4658351A (en) * | 1984-10-09 | 1987-04-14 | Wang Laboratories, Inc. | Task control means for a multi-tasking data processing system |
US4897780A (en) * | 1984-10-09 | 1990-01-30 | Wang Laboratories, Inc. | Document manager system for allocating storage locations and generating corresponding control blocks for active documents in response to requests from active tasks |
US4667286A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for transferring data between a disk and a central processing unit |
US4841437A (en) * | 1985-09-18 | 1989-06-20 | Lp Com | System architecture for a test apparatus having primary and dependent processors |
US4694426A (en) * | 1985-12-20 | 1987-09-15 | Ncr Corporation | Asynchronous FIFO status circuit |
US5133062A (en) * | 1986-03-06 | 1992-07-21 | Advanced Micro Devices, Inc. | RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory |
DE3610155A1 (de) * | 1986-03-26 | 1987-10-08 | Joachim Bauer | Mehrprozessorsystem fuer paralleles schreiben und lesen von informationen |
US4791629A (en) * | 1986-06-02 | 1988-12-13 | Ibm Corporation | Communications switching system |
US4791489A (en) * | 1987-03-06 | 1988-12-13 | Michael Polatnick | General purpose video special effects system and method therefor |
US5163132A (en) * | 1987-09-24 | 1992-11-10 | Ncr Corporation | Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device |
US4991169A (en) * | 1988-08-02 | 1991-02-05 | International Business Machines Corporation | Real-time digital signal processing relative to multiple digital communication channels |
US5247678A (en) * | 1989-10-12 | 1993-09-21 | Texas Instruments Incorporated | Load time linker for software used with a multiprocessor system |
US5167028A (en) * | 1989-11-13 | 1992-11-24 | Lucid Corporation | System for controlling task operation of slave processor by switching access to shared memory banks by master processor |
JPH03180933A (ja) * | 1989-12-08 | 1991-08-06 | Matsushita Electric Ind Co Ltd | スタックメモリ |
US5150456A (en) * | 1990-08-06 | 1992-09-22 | Elite High Technology, Inc. | Graphic image printing system and method |
-
1991
- 1991-08-14 JP JP22887091A patent/JP3203701B2/ja not_active Expired - Fee Related
- 1991-09-26 EP EP91308794A patent/EP0483970A1/en not_active Ceased
- 1991-10-15 IL IL9974491A patent/IL99744A/en not_active IP Right Cessation
- 1991-10-22 ZA ZA918427A patent/ZA918427B/xx unknown
- 1991-10-29 WO PCT/EP1991/002036 patent/WO1992008192A1/en not_active Application Discontinuation
- 1991-10-29 HU HU9301263A patent/HU215862B/hu unknown
- 1991-10-29 CZ CZ1993787A patent/CZ9300787A3/cs unknown
- 1991-10-29 PL PL91298936A patent/PL166975B1/pl not_active IP Right Cessation
- 1991-10-29 SK SK41393A patent/SK41393A3/sk unknown
-
1994
- 1994-01-03 US US08/176,337 patent/US5539896A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1992008192A1 (en) | 1992-05-14 |
PL166975B1 (pl) | 1995-07-31 |
EP0483970A1 (en) | 1992-05-06 |
JP3203701B2 (ja) | 2001-08-27 |
HU9301263D0 (en) | 1993-08-30 |
ZA918427B (en) | 1992-08-26 |
SK41393A3 (en) | 1993-07-07 |
IL99744A (en) | 1995-05-26 |
HUT65534A (en) | 1994-06-28 |
CZ9300787A3 (cs) | 2002-07-17 |
JPH04289955A (ja) | 1992-10-14 |
US5539896A (en) | 1996-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
HU215862B (hu) | Rendszer kódszegmensek valós idejű dinamikus egymáshoz kapcsolására, továbbá eljárás kódszegmensek egymáshoz kapcsolására, valamint eljárás memória megosztására | |
JP3138171B2 (ja) | システム機能をダウンロードする方法 | |
JPH04248593A (ja) | ディジタル・オーディオ及びmidi合成音楽を同時に出力する方法及び装置 | |
EP0047175A1 (en) | Speech synthesizer apparatus | |
JPH0573046A (ja) | 楽音信号演算処理装置 | |
JP2605903B2 (ja) | 楽音合成装置 | |
JPS6118995A (ja) | 演奏システム | |
JPS58140793A (ja) | 電子楽器の演奏情報検出方式 | |
JPH09319373A (ja) | 楽音形成装置 | |
JP2001509610A (ja) | 減結合の命令実行及び音声データシーケンスを有する音声効果プロセッサ | |
KR0167304B1 (ko) | 음원발생기 | |
JPS6153696A (ja) | 電子楽器 | |
JP2975510B2 (ja) | 電子楽器 | |
JP3357693B2 (ja) | エミュレーションメモリのマッピング回路及びエミュレーションシステム | |
JPH0713861A (ja) | Cpuインタフェース装置 | |
JP3099696B2 (ja) | 波形解析装置 | |
JPS6112579B2 (hu) | ||
JP2576805Y2 (ja) | 楽音生成用lsi | |
JP2715833B2 (ja) | 楽音発生装置 | |
CN1103485C (zh) | 高级语言指令解码的语音合成装置 | |
JPS59116991A (ja) | 連想メモリ装置 | |
JPH0619737B2 (ja) | メモリアクセス装置 | |
JPS6222102B2 (hu) | ||
JPS6032094A (ja) | 電子楽器 | |
JPH03142536A (ja) | 記憶装置の診断方式 |