NL9401779A - Werkwijze en schakeling voor het verlenen van prioriteiten aan en opslaan van wisopdrachten in een geheugeninrichting. - Google Patents

Werkwijze en schakeling voor het verlenen van prioriteiten aan en opslaan van wisopdrachten in een geheugeninrichting. Download PDF

Info

Publication number
NL9401779A
NL9401779A NL9401779A NL9401779A NL9401779A NL 9401779 A NL9401779 A NL 9401779A NL 9401779 A NL9401779 A NL 9401779A NL 9401779 A NL9401779 A NL 9401779A NL 9401779 A NL9401779 A NL 9401779A
Authority
NL
Netherlands
Prior art keywords
block
erase
command
queue
programming
Prior art date
Application number
NL9401779A
Other languages
English (en)
Other versions
NL194901C (nl
NL194901B (nl
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of NL9401779A publication Critical patent/NL9401779A/nl
Publication of NL194901B publication Critical patent/NL194901B/nl
Application granted granted Critical
Publication of NL194901C publication Critical patent/NL194901C/nl

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/20Suspension of programming or erasing cells in an array in order to read other cells in it

Landscapes

  • Read Only Memory (AREA)

Description

WERKWIJZE EN SCHAKELING VOOR HET VERLENEN VAN PRIORITEITEN AAN EN OPSLAAN VAN WISOPDRACHTEN IN EEN GEHEUGENINRICHTING
De onderhavige uitvinding heeft betrekking op niet-vluchtige halfgeleidergeheugens. In het bijzonder heeft de onderhavige uitvinding betrekking op een werkwijze en schakeling voor het opslaan van wisopdrachten die de diepte van een bewerkingswachtrij welke gebruikersopdrach-ten opslaat overschrijdt.
Een bekend niet-vluchtig halfgeleidergeheugen is het electrisch wisbaar programmeerbaar slechts leesbaar flitsgeheugen (flash electrically erasable programmable read-only memory). Flitsgeheugens worden electrisch geprogrammeerd en houden hun gegevens wanneer ze eenmaal geprogrammeerd zijn vast totdat ze gewist worden. Na het wissen kunnen flitsgeheugens met nieuwe code of gegevens geprogrammeerd worden.
Flitsgeheugens verschillen van conventionele electrisch wisbare programmeerbare slechts leesbare geheugens (EEPROMs) met betrekking tot het wissen. Conventionele EEPROMs gebruiken in het typische geval een keuzetran-sistor voor het aansturen van het wissen van een individuele byte. Flitsgeheugens anderzijds bereiken in het typische geval veel hogere dichtheden onder gebruikmaking van enkelvoudige transistorcellen. Sommige bekende flitsgeheugens worden gewist door het gelijktijdig aanleggen van een hoge spanning aan de bronelectroden van elke geheugencel in de geheugenmatrix. Dit leidt tot het wissen van de volledige matrix.
Flitsgeheugennormalisaties definiëren een logische één als de situatie waarin weinig of geen electronen zijn opgeslagen op de zwevende poortelectrode van een geheugencel. Eveneens volgens afspraak is een logische nul gedefinieerd als de situatie waarin veel electronen zijn opgeslagen op de zwevende poortelectrode van de geheugen- cel. Het wissen van het flitsgeheugen doet een logische één opslaan in elke bitcel. Flitsgeheugencellen kunnen niet zonder voorafgaand wissen individueel vanuit een logische nul naar een logische één worden overschreven. Een flitsgeheugencel kan echter wel individueel vanuit een logische één naar een logische nul worden overschreven, aangezien dit eenvoudigweg het toevoegen van electronen met zich meebrengt aan een zwevende poortelectrode die het intrinsieke aantal electronen bevat dat behoort bij de gewiste toestand.
De bewerking van het wissen, programmeren en controleren van flitsgeheugens vereist het nauwkeurig aansturen van de spanningen die vereist zijn voor het uitvoeren van die stappen. Een flitsgeheugen uit de stand der techniek is bijvoorbeeld het 28F008 complementair metaal-oxide-halfgeleider flitsgeheugen (complimentary metal oxide semiconductor flash memory - CMOS) dat verkocht wordt door Intel Corporation te Santa Clara, Cali-fornië, Verenigde Staten van Amerika en dat een flitsgeheugen van 8 megabit is. Het flitsgeheugen omvat een opdrachtenregister teneinde het electrisch wissen en het programmeren te beheren. Opdrachten worden vanuit een besturende microprocessor ingeschreven voor het wissen onder gebruikmaking van standaardmicroprocessorschrijf-tijden. De inhoud van het opdrachtenregister dient als invoer voor een interne toestandsmachine die wis- en programmeerschakelingen bestuurt.
In het typische geval kan slechts één bewerking tegelijkertijd worden uitgevoerd in een flitsgeheugen. Dit betekent, dat opdrachten met hoge prioriteit de uitvoering van opdrachten van lage prioriteit die voor de opdracht met hoge prioriteit werden uitgegeven moeten afwachten. Opdrachten tot het wissen van blokken kosten bijvoorbeeld veel tijd en hebben een vrij lage prioriteit. Programmeeropdrachten kunnen daarentegen vrij snel worden uitgevoerd en hebben een hogere prioriteit dan blokwisopdrachten. Niettemin wordt in bekende flitsgeheugens, wanneer eenmaal de uitvoering van een wisopdracht begint, de uitvoering van een programmeeropdracht uitgesteld tot na de volledige uitvoering van de blokwisopdracht.
Een doel van de onderhavige uitvinding is het verschaffen van een werkwijze en schakeling die een gebruiker toestaat elk geheugenblok binnen een niet-vluchti-ge geheugeninrichting als een aparte geheugeninrichting te behandelen.
Een ander doel van de onderhavige uitvinding is het een gebruiker van een niet-vluchtige geheugeninrichting die vele geheugenblokken bevat toe te staan blokwis-opdrachten uit te geven zonder er mee rekening te houden of andere geheugenblokken op dat moment geprogrammeerd of gewist worden.
Nog een ander doel van de onderhavige uitvinding is het een gebruiker van een niet-vluchtige geheugeninrichting die vele geheugenblokken bevat toe te staan zoveel wisopdrachten uit te geven als er geheugenblokken zijn.
Nog een ander doel van de onderhavige uitvinding is het mogelijk te maken wisopdrachten te onderbreken voor het afhandelen van daaropvolgend ontvangend programmeeropdrachten .
Nog een verder doel van de onderhavige uitvinding is het verlenen van prioriteit aan wisopdrachten als reactie op programmeer-opdrachtonderbrekingen.
Een werkwijze voor het opslaan van en onderlinge prioriteit verlenen aan wisopdrachten wordt beschreven voor een niet-vluchtige geheugeninrichting. De werkwijze voorkomt dat de diepte van een bewerkingswachtrij die verantwoordelijk is voor het in een wachtrij zetten van programmeer- en wisopdrachten, het aantal wisopdrachten dat op één tijdstip wordt opgeslagen beperkt. De eerste ontvangen wisopdracht dient als positievasthouder, die een positie vasthoudt binnenin de bewerkingswachtrij voor alle daaropvolgend ontvangen wisopdrachten. Alle vervolgens ontvangen wisopdrachten worden opgenomen en uit de bewer- kingswachtrij verwijderd. Dientengevolge kan de bewer-kingswachtrij bijkomende opdrachten ontvangen en kan een wisopdracht in de wachtrij worden gezet voor elk geheugen-blok in de niet-vluchtige geheugeninrichting. Aan opgenomen wisopdrachten kan prioriteit worden verleend in reactie op daaropvolgend ontvangen programmeeropdrachten. Blokken worden gevlagd om met prioriteit gewist te worden onder gebruikmaking van een prioriteitsregister. Bovendien staan onderbrekingsvensters die op veilige punten geplaatst zijn het onderbreken van wisopdrachten toe voor het behandelen van opdrachtonderbrekingen.
Andere doelen, eigenschappen, en voordelen van de onderhavige uitvinding zullen duidelijk worden uit de bijgaande tekeningen en de volgende gedetailleerde beschrijving.
De onderhavige uitvinding wordt, bij wijze van voorbeeld en niet als beperking, geïllustreerd in de figuren van de bijgaande tekeningen, waarin verwijzings-cijfers gelijke elementen aanduiden, en waarin: figuur 1 een blokdiagram is van een niet-vluch-tige geheugeninrichting, figuur 2 een blokdiagram is van de gebruikers-koppelingsschakeling van de niet-vluchtige geheugeninrichting, figuur 3 bits illustreert van een globaal sta-tusregister en van blokstatusregisters, figuur 4 een blokdiagram is van de matrixbestu-ringseenheid van het niet-vluchtige geheugen, figuur 5 een objectdiagram is van de functies die verantwoordelijk zijn voor het wissen van een blok geheugen, figuur 6 (twee pagina's) een stroomdiagram is van de wisbesturingsfunctie, figuur 7A de status van de bewerkingswachtrij en het prioriteitsregister illustreert voorafgaand aan opname van een blokwisopdracht, figuur 7B de status van de bewerkingswachtrij en het prioriteitsregister illustreert na opname van een blokwisopdracht, figuur 8 in de vorm van een stroomdiagram de onderbrekingsvensterfunctie illustreert, figuur 9A de toestand van de bewerkingswachtrij en het prioriteitsregister illustreert wanneer een pro-grammeer-opdracht de uitvoering van een wisopdracht onderbreekt , figuur 9b de status van de bewerkingswachtrij en het prioriteitsregister illustreert wanneer een programmeeropdracht de uitvoering van een wisopdracht onderbreekt en het te programmeren blok op dat moment gewist wordt, figuur 9C de status van de bewerkingswachtrij en het prioriteitsregister illustreert wanneer een programmeeropdracht de uitvoering van een wisopdracht onderbreekt en een wisopdracht voorafgaand is opgenomen voor het blok dat geprogrammeerd moet worden, en figuur 10 een computersysteem illustreert dat een niet-vluchtige geheugeninrichting omvat die wisopdrachten opneemt.
1. Overzicht van een niet-vluchtige geheugeninrichting
Figuur 1 illustreert, in de vorm van een blokdi-agram, een niet-vluchtige geheugeninrichting 20, die de werkwijze en de schakeling volgens de onderhavige uitvinding belichaamt. De geheugeninrichting 20 omvat een ge-bruikerskoppelingsschakeling (user interface - UI) 30, een matrixbesturingseenheid 40 en een niet-vluchtige geheugen-matrix. De gebruiker van de geheugeninrichting brengt opdrachten over naar de geheugeninrichting 20 via de adresseringssignalen 21, besturingssignalen 22 en gege-venssignalen 23. De gebruikerskoppelingsschakeling 30 ontvangt de signalen 21, 22 en 23 die de opdrachten van de gebruiker vertegenwoordigen en decodeert deze. De gebruikerskoppelingsschakeling 30 omvat een bewerkingswachtrij die de geheugeninrichting 20 toestaat meerdere gebruikers-commando's die de bewerkingswachtrij overbrengt naar de matrixbesturingseenheid 40, in de wachtrij te plaatsen. De matrixbesturingseenheid 40 voert de aangegeven opdrachten uit op het aangegeven blok in de niet-vluchtige geheugen-matrix 50. Opdrachten die worden uitgevoerd door de matrixbesturingseenheid 40 omvatten programmeeropdrachten en blokwisopdrachten.
Zoals hieronder in groter detail beschreven zal worden, staat de niet-vluchtige geheugeninrichting 20 toe veel meer wisopdrachten op te slaan dan in de bewerkingswachtrij kunnen worden opgeslagen. Kort gezegd, doet de matrixbesturingseenheid 40 dit door het uitvoeren van een blokwisopdracht te onderbreken voor het opnemen van een andere blokwisopdracht. De opgenomen blokwisopdracht wordt dan uit de bewerkingswachtrij verwijderd, waardoor wordt toegestaan dat de gebruikerskoppelingsschakeling 30 toegevoegde opdrachten in de bewerkingswachtrij plaatst. Na het voltooien van het wissen van een blok, gaat de matrixbesturingseenheid 40 na of er opgenomen blokwisopdrachten zijn, die dan worden uitgevoerd. Zoals eveneens hieronder in groter detail zal worden beschreven, kent de matrixbesturingseenheid 40 onderlinge prioriteiten toe aan opgenomen blokwisopdrachten in reactie op programmeeropdrachten en onderbreekt deze de uitvoering van blokwisopdrachten teneinde daaropvolgend in de wachtrij geplaatste programmeeropdrachten uit te voeren.
Beschouw, alvorens aan die gedetailleerde bespreking te beginnen, weer geheugeninrichting 20. Geheugeninrichting 20 omvat eveneens besturingsregisters 70 en een lees/schrijf-verbinding 80. Deze schakelingen 70 en 80 maken in samenwerking met gebruikerskoppelingsschakeling 30 en matrixbesturingseenheid 40, het gebruik van de geheugenmatrix 50 verhoudingsgewijs eenvoudig voor de gebruiker.
De geheugenmatrix 50 verschaft willekeurig toegankelijke, niet-vluchtige, grootschalige gegevensop slag. De niet-vluchtige geheugenmatrix 50 omvat bij voorkeur 32 blokken flitsgeheugencellen. Elk blok geheugen verschaft bij voorkeur een gegevensopslag van 64 kilobyte, die apart kan worden gewist.
De gebruikerskoppelingsschakeling 30 werkt als een scheidsrechter tussen de gebruiker die opdrachten uitgeeft en de matrixbesturingseenheid 40, die geselecteerde opdrachten uitvoert. De gebruikerskoppelingsschakeling bepaalt bijvoorbeeld of de verzochte bewerking van de gebruiker geldig is, gegeven de actuele status van de matrixbesturingseenheid 40. De gebruikerskoppelingsschakeling 30 ontvangt als invoer de opdracht- en adresinformatie en bepaalt de bewerking, of de opdracht, die de matrixbesturingseenheid 40 dient uit te voeren (zoals hierin gebruikt, ziet de opdrachtinformatie 24 op de combinatie van adresseringssignalen 21, gegevenssignalen 23 en bestu-ringssignalen 22 die opdrachten weergeven). Verder bestuurt de gebruikerskoppelingsschakeling 30 het in de wachtrij plaatsen van adressen en gegevens, de toegang van de gebruiker tot statusregisters, en de uitgangsmulti-plexer 120.
De gebruikerskoppelingsschakeling 30 geeft toegang tot de geheugenmatrix 50 door de gebruiker vrij als reactie op gebruikersopdrachten die worden doorgegeven via de signalen 21, 22 en 23. Bij ontvangst van een opdracht, slaat de gebruikerskoppelingsschakeling 30 de adres-, gegevens- en opdrachtsignalen 21, 22 en 23 op in interne buffers. Indien de gevraagde bewerking een programmeer- of blokwisopdracht is, worden de opdracht-, adres- en gegevenssignalen 21, 22 en 23 overgebracht naar de matrixbesturingseenheid 40 via de wachtrij bus 31. De adresinformatie behorende bij een opdracht wordt door de gebruikerskoppelingsschakeling 30 doorgezonden naar de lees/schrijf-verbinding 80 via de multiplexer 112.
De gebruikerskoppelingsschakeling 30 verschaft twee signalen, CMDRDY en SUSREQ, aan de matrixbesturingseenheid 40. CMDRDY geeft aan dat er tenminste één extra opdracht in de bewerkingswachtrij is die wacht op uitvoering. SUSREQ bericht aan de matrixbesturingseenheid 40 dat er een onuitgevoerd verzoek is tot het schorsen van de bewerkingen van de matrixbesturingseenheid.
De gebruikerskoppelingsschakeling 30 selecteert een ingangsadres 114 voor de lees/schrijf-verbinding 80 via aansturing van de ingangsadresmultiplexer 112. Het gekozen ingangsadres is ofwel het adres dat wordt waargenomen door TTL-buffers (niet getoond) op de gebruikers-adresbus 21, of een gebufferd adres 110 vanuit de gebruikerskoppelingsschakeling 30.
De gebruikerskoppelingsschakeling 30 stuurt de uitgangsgegevensmultiplexer 120 aan voor het selecteren van een bron voor uitvoergegevens naar de gebruiker. Die gegevens worden over de gebruikersgegevensbus 23 overgebracht. De geselecteerde uitvoergegevens kunnen ofwel gegevens 82 van de lees/schrijf-verbinding 80 zijn, ofwel blokstatusregistergegevens (BSR-gegevens) 32 van een stel blokstatusregisters die bevat zijn in de gebruikerskoppelingsschakeling 30. Aldus kan de gebruiker gegevens ontvangen vanuit de geheugenmatrix 50 zowel als statusinfor-matie betreffende de status van de geheugeninrichting 20.
De matrixbesturingseenheid 40 stuurt de verschillende componenten aan die noodzakelijk zijn voor het programmeren, wissen en controleren van de geheugenmatrix 50. De matrixbesturingseenheid 40 voert de algoritmen, ook wel functies genoemd, uit, die de hoogspanningsschakelin-gen van lees/schrijf-verbinding 80 iteratief aansturen voor het aanleggen en verwijderen van lading van flitsge-heugencellen in de geheugenmatrix 50. De matrixbesturingseenheid 40 stuurt de hoogspanningsschakelingen aan en adresseert de geheugenmatrix 50 door besturingsregister 70 te benaderen via de centrale besturingsbus 100.
De matrixbesturingseenheid 40 voorziet de gebruikerskoppelingsschakeling 30 van een aantal statussig-nalen. De matrixbesturingseenheid 40 voorziet de gebruikerskoppelingsschakeling 30 van een signaal, RDY, dat aangeeft of de matrixbesturingseenheid 40 bezig is of klaar staat om de uitvoering van een andere opdracht te beginnen. NXTCMD geeft aan de gebruikerskoppelingsschake-ling 30 aan of de matrixbesturingseenheid 40 de opdracht geplaatst in de primaire wachtrij van de bewerkingswacht-rij aan het uitvoeren is of een onderbrekende opdracht die is geplaatst in de secundaire wachtrij van de bewerkings-wachtrij. OPDONE geeft voltooiing aan van de opdracht die actueel wordt uitgevoerd. IDLE geeft aan dat bewerkingen met succes zijn geschorst en de gebruiker de controle over de geheugeninrichting 20 kan overnemen.
De besturingstoegangsschakeling 102 geeft aan de matrixbesturingseenheid 40 de toegang vrij voor het aansturen van de registers 70 via de centrale besturingsbus 100. Gedurende de normale werking, stuurt de matrixbesturingseenheid 40 de besturingstoegangsschakeling 102 aan en controleert deze aldus de toegang tot de besturingsregis-ters 70. De besturingstoegangsschakeling 102 geeft informatie van en naar de matrixbesturingseenheid 40 door. De matrixbesturingseenheid 40 voert statusinformatie uit naar de besturingstoegangsschakeling 102.
De matrixbesturingseenheid 40 schrijft in gespecialiseerde besturingsregisters 70 door het overbrengen van een schrijfbesturingssignaal, en een registeradres samen met bijbehorende schrijfgegevens naar de besturingstoegangsschakeling 102 via de bus 104. De besturingstoegangsschakeling 102 genereert dan een schrijfcyclus en koppelt deze op de centrale besturingsbus 100 teneinde naar het geadresseerde besturingsregister te schrijven. De matrixbesturingseenheid 40 leest de besturingsregisters 70 door een registeradres en een leesbesturingssignaal over te brengen naar de besturingstoegangsschakeling via de bus 104. De besturingstoegangsschakeling 102 genereert dan een leestoegangscyclus en koppelt deze op de centrale besturingsbus 100 teneinde het geadresseerde besturingsregister te lezen.
Het besturingsregister 72 omvat gespecialiseerde besturingsregisters en schakelingen voor het aansturen van de hoogspanningsschakelingen van de lees/schrijf-verbin-ding 80 in overeenstemming met besturingssignalen 90. Het besturingsregister 74 stuurt speciale kolomtoegangsschake-lingen aan binnenin de lees/schrijf-verbinding 80 in overeenstemming met besturingssignalen 91. Het besturingsregister 76 omvat een stel slechts leesbare registers voor het waarnemen en bufferen van een stel statussignalen 92 vanuit de lees/schrijf-verbinding 80. Het besturingsregister 78 stuurt de leesverbinding van de lees/schrijf-verbinding 80 aan via besturingssignalen 93. Vanwege zijn functie, wordt het besturingsregister 78 ook wel vervangend adresregister 78 genoemd. De matrixbesturingseenheid 40 maakt gebruik van het vervangende adresregister 78 voor het adresseren van de geheugenmatrix 50 gedurende het wissen met prioriteit, zoals hieronder in groter detail zal worden beschreven.
IA. De qebruikerskoppelinqsschakelina
Figuur 2 illustreert de gebruikerskoppelings-schakeling (user interface - UI) 30 in de vorm van een blokdiagram. De gebruikerskoppelingsschakeling '30 omvat een opdrachtstatusmachine 200, een tijdelijke wachtrij 202, de bewerkingswachtrij 204 en de statusregisters 206.
De opdrachtstatusmachine 200 bepaalt de opdracht die moet worden uitgevoerd, gebaseerd op opdrachtinformatie, ontvangen van de gebruiker. De opdrachtstatusmachine 200 decodeert de opdrachtinvoer van de gebruiker en beveelt aan de rest van de geheugeninrichting 20 de stappen voor het uitvoeren van die opdracht. De opdrachtstatusmachine 200 stuurt de opdrachtinformatie, indien nodig, door naar de matrixbesturingseenheid 40. Indien een leesbewer-king moet worden uitgevoerd, zendt de opdrachtstatusmachine 200 het adres naar de lees/schrijf-schakeling 80. De opdrachtstatusmachine 200 beheerst de gegevens die beschikbaar zijn aan de uitgangen door de uitgangsmulti- plexer 120 en de ingangssignalen naar de ingangsmulti-plexer 112. Verder beheerst de opdrachtstatusmachine 200 de toegang tot de statusregisters 206.
Indien de gevraagde opdracht er een is die niet wordt uitgevoerd door de matrixbesturingsinrichting 40, bijvoorbeeld een opdracht tot het lezen van de matrix of het lezen van de statusregisters, geeft de gebruikerskop-pelingsschakeling 30 de juiste besturingssignalen af voor het doen uitvoeren van de gevraagde opdracht. Indien het ontvangen opdrachtverzoek er een is dat moet worden uitgevoerd door de matrixbesturingseenheid 40, wordt de op-drachtcode die de opdracht representeert gebruikt voor het genereren van een index in een sprongtabel. De index naar de sprongtabel, die ook wel verschuivingsvector genoemd wordt, wordt doorgegeven naar de tijdelijke opdracht/a-dres/gegevens-wachtrij 202. De verschuivingsvector wordt uitgevoerd naar de bewerkingswachtrij 204.
Indien een opdracht door de matrixbesturingseenheid 40 moet worden uitgevoerd, dan koppelt de gebruikers-koppelingsschakeling 30 de opdracht-, adres en gegevensin-formatie naar de tijdelijke wachtrij 202 voor verwerking. Wanneer de tijdelijke wachtrij 202 de opdracht-, gegevens-en adresinformatie eenmaal ontvangt, geeft deze de informatie door aan de bewerkingswachtrij 204. Wanneer opdrachten van de matrixbesturingseenheid worden verschaft aan de opdrachtstatusmachine 200, geeft deze de opdrachten en adres/gegevens-informatie door aan de tijdelijke wachtrij 202. De tijdelijke wachtrij 202 geeft deze vervolgens door aan de bewerkingswachtrij 204. Wanneer de bewerkingswachtrij 204 gereed is om de opdracht te accepteren in één van zijn twee wachtrijen, wordt de opdracht in de actieve wachtrij van de bewerkingswachtrij 204 geplaatst. Wanneer de opdrachtstatusmachine 200 informatie doorgeeft aan de tijdelijke wachtrij 202 stelt deze eveneens een vlag in teneinde aan de bewerkingswachtrij 204 door te geven dat een opdracht er op wacht te worden toegevoegd aan een beschikbare rij.
De twee weachtrijen binnenin de bewerkingswacht-rij 204 zijn de primaire en de secundaire wachtrij. De primaire wachtrij geeft de opdracht aan die moet worden uitgevoerd of die wordt uitgevoerd. De secundaire wachtrij slaat de volgende opdracht op die moet worden uitgevoerd na voltooiing van de opdracht in de primaire wachtrij. Wanneer de matrixbesturingseenheid 40 de uitvoering voltooit van de bewerking die in de primaire wachtrij geplaatst is, dan wordt die bewerking verwijderd uit de bewerkingswachtrij 204 teneinde de uitvoering van de volgende bewerking toe te staan. Indien een opdracht die moet worden uitgevoerd is opgeslagen in de tijdelijke wachtrij 202, worden de verschuivingsvector, de gegevens en het adres overgebracht naar de bewerkingswachtrij 204 voor daaropvolgende uitvoering. Het omschakelen van de besturing staat uitvoering toe van een opdracht die is opgeslagen in de secundaire wachtrij voor voltooiing van de opdracht die is opgeslagen in de eerste wachtrij.
De gebruikerskoppelingsschakeling 30 staat drie lagen van het opslaan van opdrachten in een wachtrij toe. Wanneer een ontvangen opdracht bijvoorbeeld een matrixbe-sturingsbewerking vereist en er op dat moment geeneen wordt uitgevoerd, belaadt de gebruikerskoppelingsschakeling de primaire wachtrij van de bewerkingswachtrij 204 met de gegevens voor de opdracht en start deze de werking van de matrixbesturingseenheid 40. In het typische geval zal de secundaire wachtrij beschikbaar zijn voor het ontvangen van bijkomende gebruikersopdrachten terwijl de matrixbesturingseenheid 40 een opdracht aan het uitvoeren is die is geplaatst in de primaire wachtrij. Bij ontvangst van een daaropvolgende opdracht, informeert de gebruikerskoppelingsschakeling 30 de matrixbesturingseenheid 40 door het af geven van een signaal CMDRDY, dat een nieuwe opdracht geplaatst is in de bewerkingswachtrij 204. Het algoritme van de matrixbesturingseenheid dat op dat moment draait zal bepalen of de werking daarvan moet worden onderbroken voor het afhandelen van de in de wachtrij geplaatste bewerking.
Bij voorkeur omvat de gebruikerskoppelingsscha-keling 30 een algemeen statusregister en een stel van 32 blokstatusregisters (BSRs) , één BSR voor elk blok in geheugenmatrix 50. Figuur 3 illustreert voorbeelden van statusregisterbitdefinities. Het globale statusregister (GSR) geeft de status van de geheugeninrichting 20 in het algemeen weer en draagt geen enkele specifieke blokinfor-matie over. Hoewel een mislukte bewerking kan worden gedetecteerd via het globale statusregister, kan het feitelijke blok waarin de mislukte operatie plaatsvond slechts worden gedetecteerd door het lezen van de BSRs.
De blokstatusregisters (BSRs), waarvan er slechts één is geïllustreerd, geven de status aan van bewerkingen die worden uitgevoerd op een blok via een RDY/!BSY-bit. Indien geen bewerking actueel op een blok wordt uitgevoerd, zal dit worden aangegeven door de actieve toestand RDY, van het RDY/!BSY-bit van het blok. Indien een blok actueel wordt bewerkt, zal dit op analoge wijze worden aangegeven door de inactieve toestand, !BSY, van het RDY/!BSY-bit van het blok. De gebruikerskoppelings-schakeling 30 kan ieder blokstatusregister benaderen teneinde de staat van uitvoering van bewerkingen van de matrixbesturingseenheid te bewaken. De gebruiker kan de statusregisters 206 op ieder moment benaderen teneinde de toestand van de matrixbesturingseenheid 40 te bepalen.
1B. De matrixbesturingseenheid
De matrixbesturingseenheid 40 heeft een universele verwerkingsstructuur. Zoals getoond in figuur 4, omvat de matrixbesturingseenheid 40 een programmageheugen 230, een instructieregister 232, een programmateller 234, een logische rekeneenheid (arithmetic logic unit - ALU) 236, en een registerbestand 238.
De matrixbesturingseenheid 40 voert algoritmen uit die zijn opgeslagen in het programmageheugen 230. Deze algoritmen omvatten instructiewoorden, in het bijzonder gegevensoverdrachtsinstructies, berekeningsinstructies, spronginstructies (vertakkingsinstructies) en besturings-instructies. Gegevensoverdrachtsinstructies hebben betrekking op het verplaatsen van gegevens naar en van het registerbestand 238. Spronginstructies staan de programmering toe de doorstroming van een algoritme aan te passen door het gebruik van subroutine-aanroepen en voorwaardelijke of onvoorwaardelijke sprongen. Berekeningsinstructies leiden tot bewerkingen die de logische rekeneenheid 236 erbij betrekken. Besturingsinstructies verschaffen de middelen voor het instellen of op nul stellen van twee onderbrekingsvlaggen en het instellen van wijzers (pointers) naar de onderbrekingsafhandelingsroutines.
Algoritmen die worden opgeslagen in het program-mageheugen 230 worden benaderd via sprongvectoren die ontvangen worden van de gebruikerskoppelingsschakeling 30 en programma-adressen. Programma-adressen worden opgeslagen in de eerste 32 adressen van het programmageheugen 230. Het programmageheugen 230 ontvangt één adres tegelijkertijd van de programmateller 234. Het programmageheugen 230 voert instructies, met één instructie tegelijkertijd, uit naar het instructieregister 232, dat deze buffert.
De basisfunctie van programmateller 234 is het decoderen van de volgende instructie die moet worden uitgevoerd en het wijzen naar de juiste volgende instructie. Dat wil zeggen dat de programmateller 234 het op de juiste wijze opeenvolgen van instructies in stand houdt. Bovendien staat de programmateller 234 het omschakelen van de besturing toe tussen de primaire en secundaire wachtrijen van de bewerkingswachtrij 204 en verschaft deze een onderbrekingsstructuur. Het adres dat wordt verschaft als uitgang van de programmateller 234 wordt gebruikt voor het opzoeken van de volgende instructie uit het programmageheugen 230 voor overdracht naar het instructieregister 232 en uitvoering door de ALU 236.
De programmateller 234 staat de matrixbestu- ringseenheid 40 toe de besturing om te schakelen gedurende een onderbreking teneinde de besturing van de matrixbestu-ringseenheid op tijdige wijze op te slaan. Aldus wordt, nadat een onderbrekingsbewerking voltooid is, een andere besturingsomschakeling uitgevoerd teneinde de originele toestand van de matrixbesturingseenheid te herstellen, en kan de originele verwerking voortgaan.
De programmateller 234 omvat twee registers die de onder brekingsaf handeling en de omschakeling van de besturing ondersteunen. Het onderbrekingsstartregister slaat het adres op van een onderbrekingsstartroutine. Aldus begint de onderbrekingsfunctie, bij zijn aanvang, met de routine waarnaar gewezen wordt door het onderbrekingsstartregister. Het tweede register, het onderbre-kingsterugkeerregister, vervult een analoge functie. Het onderbrekingsterugkeerregister slaat het adres op van de routine waarnaar moet worden teruggekeerd nadat de onderbrekingsfunctie voltooid is en de terugkeeropdracht (return - RET) wordt uitgegeven.
De ALU 236 voert alle rekenkundige en logische functies uit, en zal hier niet in detail worden besproken.
Het registerbestand 238 is verdeeld in twee segmenten. Het eerste segment, waarnaar wordt verwezen als het hoofdsegment, bevat variabelen voor het algoritme dat wordt uitgevoerd door de matrixbesturingseenheid 40. Het tweede segment bevat variabelen voor een onderbrekend algoritme. Daarom schakelt het registerbestand 238, wanneer dit een onderbreking bedient, de besturing van de matrixbesturingseenheid 40 om van het hoofdsegment naar het tweede segment. Alle bewerkingen worden nu uitgevoerd in het onderbrekingssegment van het registerbestand 238. Alle variabelen die worden vastgehouden in het hoofdsegment van het registerbestand worden in stand gehouden maar zijn niet toegankelijk gedurende de bediening van een onderbreking. Na de onderbrekingsfunctie, keert de besturing weer terug bij het hoofdsegment.
Het registerbestand 238 omvat een prioriteitsre- gister, dat wordt gebruikt voor het aangeven van de uitvoering van wisopdrachten met prioriteit.
1C. Onderbrekingsafhandelinosmechanismen
De architectuur van de geheugeninrichting 20 verschaft een onderbrekingsmechanisme dat onderbrekingen van algoritmen van de matrixbesturingseenheid toestaat zonder verminking van gegevens of van de hoogspanningspro-grammeer/wis-schakelingen. Het onderbrekingsmechanisme beschermt de geheugeninrichting 20 voorafgaand aan het bedienen van de onderbreking door de geheugeninrichting 20 uit een toestand te halen die schadelijk zou kunnen zijn voor de matrix. Indien bijvoorbeeld de matrixbesturingseenheid 40 actueel een wisverwerking bestuurt, worden de spanningen die vereist zijn voor het wissen van de matrix naar beneden gebracht teneinde beschadiging van de geheu-genmatrix 50 te vermijden. Na het bedienen van de onderbreking, wordt de matrixbesturingseenheid teruggeplaatst in een toestand van waaruit de originele uitvoeringsver-werking kan doorgaan.
In het bijzonder verschaft het onderbrekingsmechanisme het veilig onderbreken en opschorten van het actueel in uitvoering zijnde algoritme door een eerste uitvoeringsonderbrekingsstartroutine die wordt ingesteld door het actueel in uitvoering zijnde algoritme. Deze onderbrekingsstartcode schort op veilige wijze het actueel in uitvoering zijnde algoritme op en voert de noodzakelijke omschakeling van de besturing van de registers en programmatelier uit. Wanneer de onderbrekingsstartroutine zijn uitvoering voltooid heeft, begint de onderbrekings-routine zijn uitvoering en wordt aan het eind van de uitvoering van de onderbrekingsroutine een onderbrekings-terugkeerroutine uitgevoerd voor het bijstellen van de programmateller 234 om te wijzen naar een veilig terug-keerpunt in de onderbroken code en voor het uitvoeren van een besturingsomschakeling van de registers, zodat de onderbroken routine zijn uitvoering kan voortzetten.
Deze structuur laat het onderbreken toe van een wisbewerking voor het uitvoeren van daarna ontvangen programmeeropdrachten en voor het opnemen van daarna ontvangen blokwisopdrachten. Wisbewerkingen op een matrix kosten veel tijd. Indien een blokwisbewerking actueel in uitvoering is en een programmabewerking wacht op uitvoering, wordt een onderbrekingsverzoek gegenereerd en gaat de onderbrekingsstartroutine de geschiktheid van het onderbrekende algoritme na, en doet deze de interne energievoorzieningen op veilige wijze sequentieel naar een uitgezette toestand brengen voorafgaand aan de uitvoering van het programma-algoritme.
Bij voorkeur verschaft de matrixbesturingseen-heid 40 twee onderbrekingsvlaggen: een bewerkingswachtrij-onderbrekingsvlag en een hoofdonderbrekingsvlag. Voor een door de matrixbesturingseenheid 40 te bedienen onderbreking, dient een opdracht die op uitvoering wacht aanwezig te zijn, wat aangegeven wordt door de bewering CMDRDY, en moeten beide onderbrekingsvlaggen aangezet zijn. De bewer-kingswachtrij-onderbrekingsvlag, die in het begin in een geblokkeerde toestand is, wordt binnenin algoritmen gebruikt voor het lokaal aanzetten en blokkeren van onder-brekingsafhandeling. Aldus kan een algoritme instructies hebben voor de matrixbesturingseenheid 40 voor het aanzetten en blokkeren van de bewerkingswachtrijvlag op verschillende punten gedurende de uitvoering van het algoritme, die respectievelijk onderbreekbaar en niet-onderbreek-baar zijn. De bewerkingswachtrij-onderbrekingsvlag wordt bij voorkeur automatisch geblokkeerd wanneer een aanroep of een terugkeerinstructie wordt uitgevoerd.
De hoof donderbrekingsvlag, die in het begin aangezet wordt, wordt gebruikt voor het blokkeren van onderbrekingen wanneer een algoritme een in afwachting zijnde onderbreking niet kan afhandelen en voor het afhandelen van wiscommando's met prioriteit.
Bij voorkeur besturen door de matrixbesturings- eenheid 40 uitgegeven instructies de onderbrekingsafhandeling en de onderbrekingsvlaggen. Deze opdrachten omvatten het aanzetten van de werking van wachtrij-onderbrekingen (enable operation queue interrupts - ENI), het aanzetten van andere onderbrekingen (ENGI), het blokkeren van de werking van wachtrij-onderbrekingen (disable operation queue interrupts - DSI), het blokkeren van andere onderbrekingen (DSGI) en het instellen van het onderbrekings-startregister (set interrupt startregister - SISR). ENI neemt een veilig terugkeerpunt naar het algoritme als argument, stelt het onderbrekingsterugkeerregister in op deze waarde en zet de bewerkingswachtrij-onderbrekingsvlag aan. De hoofdonderbrekingsvlag wordt aangezet door ENGI. DSI stelt de bewerkingswachtrij-onderbrekingsvlag eenvoudigweg terug en blokkeert hem. Op gelijke wijze blokkeert DSGI de hoofdonderbrekingsvlag. SISR neemt het adres van het onderbrekingsstartroutine-adres als argument en stelt het onderbrekingsstartregister in. Bij voltooiing van de onderbrekingstartroutines, wat wordt aangeduid door een terugkeerinstructie (return - RET) worden het onderbre-kingsbevestigingssignaal en het startsignaal gegeven. Het onderbrekingsalgoritme wordt dan uitgevoerd. Bij voltooiing van het onderbrekingsalgoritme, dat wordt aangeduid door de RET-instructie, wordt de onderbrekingsbit op nul gesteld en een sprong naar het adres dat is opgeslagen in het onderbrekingsterugkeerregister vindt plaats. Het onderbroken algoritme wordt dan verder uitgevoerd.
Verder kan het adres dat het veilige terugkeerpunt aangeeft van het onderbroken algoritme, de onderbre-kingsterugkeerroutine, worden veranderd gedurende de uitvoering van een algoritme.
Aldus wordt het onderbrekingsterugkeerpunt bijgewerkt gedurende uitvoering van de code teneinde naar verschillende terugkeerpunten te wijzen. Dit kan worden bereikt door de onderbrekingsterugkeerroutine te wijzigen of door het onderbrekingsterugkeerregister bij te werken teneinde te wijzen naar verschillende onderbrekingsterug- keerroutines afhankelijk van de plaats van uitvoering in het algoritme. In een wisalgoritme zou het terugkeerpunt voor de preconditiesubroutine verschillen van het terugkeerpunt voor het wisgedeelte van het algoritme dat op zijn beurt zou verschillen van het terugkeerpunt voor de postconditiesubroutine.
2. Het verlenen van prioriteiten aan en opnemen van een wiscommando en het afhandelen van een proqramma-opdracht-onderbrekinq 2A. Overzicht
Gegeven de voorgaande beschrijving van de ge-bruikerskoppelingsschakeling 30 en de matrixbesturingseen-heid 40 beschouwen we nu de onderhavige werkwijze voor het opslaan van wisopdrachten. Deze werkwijze voorkomt dat de diepte van de bewerkingswachtrij 204 het aantal wisopdrachten dat tegelijkertijd opgeslagen of in de wachtrij geplaatst kan worden beperkt. De eerste ontvangen blokwis-opdracht dient als positievasthouder voor alle daarna ontvangen blokwisopdrachten. Alle daarna ontvangen blok-wisopdrachten worden opgenomen en gewist uit de bewerkingswachtrij 204. Dientengevolge blijft de bewerkingswachtrij 204 vrij voor het ontvangen van bijkomende opdrachten en kan een wisopdracht in de wachtrij worden geplaatst voor elk blok geheugen (zoals hierin toegepast, impliceert het in een wachtrij plaatsen van wisopdrachten geen enkele bijzondere volgorde van uitvoering, het in een wachtrij plaatsen van een opdracht betekent dat de opdracht voor latere uitvoering wordt opgeslagen). Wanneer er geen verdere opgenomen wisopdrachten op uitvoering aan het wachten zijn, wordt de de positie vasthoudende wisopdracht verwijderd uit de bewerkingswachtrij 204.
De onderhavige werkwijze voorziet de opgenomen wisopdrachten eveneens van onderlinge prioriteiten in reactie op programmeeropdrachten zowel als op het onder breken van de uitvoering van een wisopdracht teneinde een daarna ontvangen programmeeropdracht uit te voeren. Zoals hierin gebruikt, is een prioriteitswis een wisopdracht die voorafgaand aan de uitvoering van een onderbrekende programmeeropdracht dient te worden uitgevoerd. Een eerder ontvangen en opgenomen wisopdracht voor een blok dient voorafgaand aan een programmeeropdracht voor datzelfde blok te worden uitgevoerd aangezien anders de integriteit van in de geheugeninrichting 20 opgeslagen gegevens in gevaar wordt gebracht. Indien bijvoorbeeld de later ontvangen programmeeropdracht wordt uitgevoerd voorafgaand aan een eerder ontvangen wisopdracht, dan zullen de zojuist geprogrammeerde gegevens verloren gaan en zal de geheugeninrichting 20 niet de gegevens bevatten die de gebruiker wenst.
Figuur 5 is een objectdiagram dat de onderlinge verhouding tussen de verschillende functies, of algoritmen, die het wissen besturen van de geheugenmatrix 50 en het opnemen van, in de wachtrij plaatsen van, en verlenen van prioriteiten aan wisopdrachten uitvoeren. Deze algoritmen zijn opgeslagen in een programmageheugen 230 van de matrixbesturingseenheid 40.
De wisbesturing 240 coördineert de activiteiten die noodzakelijk zijn voor het wissen van de geheugenmatrix 50 met één blok tegelijkertijd, voor het uitvoeren van wissen met prioriteit en voor het uitvoeren van opgenomen wisopdrachten. De wisbesturing 240 steunt op algoritmen 250, 252 en 254 voor het wissen van geheugenblok-ken. Elke functie 250, 252 en 254 voert een specifieke taak uit en geeft de besturing terug aan de wisbesturing 240. Het preconditieblok 250 voorkomt het te ver wissen van geheugencellen binnenin een blok gedurende het wissen door het verhogen van de drempelspanning van elke geheu-gencel tot een minimum niveau. Het wisblok 252 wist een blok geheugencellen en verifieert dan dat elke geheugencel een geschikte drempelspanning heeft. Het postconditieblok 254 controleert of er te ver gewiste geheugencellen zijn in het zojuist gewiste geheugenblok en repareert deze.
De functies 250, 252 en 254 vervullen hun taken door het aanleggen van hoge spanningen aan een blok van de geheugenmatrix 50. De functies 240, 250, 252 en 254 behandelen onderbrekingen van de bewerkingswachtrij 204 slechts op bekende punten gedurende hun uitvoering waarop de spanningen zich op veilige niveau's bevinden. De functies 240, 250, 252 en 254 omvatten onderbrekingsvensters 300 op deze veilige lokaties voor het behandelen van onderbrekingen. De functies 240, 250, 252 en 254 omvatten elk tenminste één onderbrekingsvenster 300. De onderbrekingsvensters kunnen slechts worden geopend wanneer de hoofdonderbre-kingsvlag aangezet is. Aldus bestuurt de matrixbesturings-eenheid 40, door het blokkeren van de hoofdonderbrekings-vlag voorafgaand aan de uitvoering door de wisbesturing 20, of het wissen plaatsvindt zonder onderbreking.
Het onderbrekingsvenster 300 reageert op onderbrekingen die worden gegenereerd door de bewerkingswachtrij 204. Indien onmiddellijk op de opdracht kan worden gereageerd, dan doet het onderbrekingsvenster 300 dat. Het onderbrekingsvenster 300 reageert onmiddellijk op wisopdrachten door het opnemen daarvan en het vrijgeven van de bewerkingswachtrij 204 voor het ontvangen van bijgevoegde opdrachten. Het onderbrekingsvenster 300 reageert op programmeeropdrachten door deze, indien mogelijk, onmiddellijk uit voeren. Indien onmiddellijke uitvoering van een programmeeropdracht niet mogelijk is, dan verzekert het onderbrekingsvenster 300 snelle uitvoering van elke wisopdracht die aan de uitvoering van de programmeeropdracht vooraf moet gaan.
Beschouw, gegeven dit overzicht, het stroomdiagram van figuur 6, dat de wisbesturing 240 in detail illustreert. De uitvoering van de wisbesturing 240 begint na ontvangst van een blokwisopdracht op een tijdstip waarop geen andere blokwisopdrachten in de wachtrij gezet zijn, ofwel in de bewerkingswachtrij 204 of door opname. In reactie hierop voert de wisbesturing 240 eerst een aantal huishoudelijke taken uit in de stappen 242 tot en met 248, De wisbesturing 240 begint in stap 242 met het op !BSY instellen van het RDY/!BSY-bit dat behoort bij het te wissen blok. Dit betekent dat het blok betrokken is in een bewerking.
De wisbesturing 240 initialiseert vervolgens het prioriteitsregister binnenin de matrixbesturingseenheid 40 in stap 244. De wisbesturing 240 gebruikt het prioriteits-register om te bepalen of een prioriteitswis in uitvoering is of zojuist voltooid is. De wisbesturing 240 maakt eveneens gebruik van het prioriteitsregister voor het vlaggen van een blok voor het wissen met prioriteit; dat wil zeggen voor het eerstvolgend wissen. Het initialiseren van het prioriteitsregister geeft aan de wisbesturing 240 aan dat geen prioriteitswis in uitvoering is en dat er geen blok gevlagd is voor het eerstvolgend wissen. In een uitvoeringsvorm, wordt het prioriteitsregister geïnitiali-seerd door het in te stellen op een waarde FF (hexadeci-maal).
De wisbesturing 240 gaat vanaf stap 244 door naar stap 246. Gedurende stap 246 selecteert de wisbesturing 240 een veilige lokatie om naar terug keren na het afhandelen van een onderbreking en slaat deze het adres van deze lokatie op in het onderbrekingsterugkeerregister van de programmateller 234. De gekozen terugkeerlokatie op dit punt is stap 246. In één uitvoeringsvorm wordt het onderbrekingsterugkeerregister ingesteld door het uitgeven van een onderbrekingsvrijgave-opdracht (enable interrupt command - ENI), die eveneens de bewerkingswachtrij-onder-brekingsvlag instelt. Teneinde elke onderbreking op een andere dan een bekende en veilige lokatie gedurende de uitvoering van een wisopdracht te voorkomen, blokkeert de wisbesturing 240 de bewerkingswachtrijonderbrekingsvlag in stap 248. In één uitvoering, doet de wisbesturing 240 dit via een opdracht tot het blokkeren van bewerkingswachtrij-onderbrekingen (disable operation queue interrupts - DSI).
In de volgende discussie wordt steeds aangenomen dat de hoofdonderbrekingsvlag aanvankelijk ingesteld is. Deze hoeft dat echter niet te zijn. De hoofdonderbrekingsvlag kan worden ingesteld of geblokkeerd door de matrixbe-sturingseenheid 40, voorafgaand aan het beginnen van de uitvoering van de wisbesturing 240. Indien de hoofdvlag geblokkeerd is, zullen geen onderbrekingen worden afgehandeld.
De wisbesturing 240 is gereed om te beginnen met het wissen van een blok geheugen na voltooiing van stap 248. De wisbesturing 240 wist het blok dat behoort bij de actuele blokwisopdracht in de volgende drie stappen onder gebruikmaking van het preconditieblok 250, het wisblok 252 en het postconditieblok 254, waarvan elk een onderbre-kingsvenster 300 omvat. Nadat het blok gewist is, gaat de wisbesturing 240 verder naar stap 255 teneinde aan te geven dat het blok nu gereed is en beschikbaar is voor andere bewerkingen. De wisbesturing 240 doet dit door het RDY/!BSY-bit van het blok om te schakelen naar RDY.
De wisbesturing 240 haalt de wisopdracht niet direct uit de bewerkingswachtrij 204. Deze eerste ontvangen wisopdracht blijft in de bewerkingswachtrij 204 als een positievasthouder voor alle opgenomen wisopdrachten totdat ze allemaal zijn uitgevoerd.
2B. Opname en uitvoering van een wiscommando
Nadat de wisbesturing 240 het wissen van het eerste blok heeft voltooid, staat deze nu op het punt de effecten van eerder ontvangen onderbrekingen te behandelen. De wisbesturing 240 behandelt eerst de effecten van onderbrekende programmeeropdrachten in de stappen 256, 258, 280, 282, 270, 272 en 300. Dit kan het uitvoeren van een prioriteitswis in de stappen 258, 280 en 282 of het uitvoeren van de programma-opdracht in de stappen 270, 272 en 300 met zich mee brengen. Wanneer deze taken voltooid zijn, richt de wisbesturing 240 zijn aandacht op het identificeren en uitvoeren van opgenomen wisopdrachten in de stappen 260, 262, 264 en 266.
De wijze waarop de wisbesturing 240 en het onderbrekingsvenster 300 deze taken vervullen kunnen worden begrepen met gebruik van voorbeelden. Beschouw eerst hoe de functies 240 en 300 wisopdrachten die ontvangen zijn gedurende de uitvoering van een andere wisopdracht opnemen. Figuur 7A illustreert een situatie waarin een wisopdracht is opgenomen: de gebruiker geeft een tweede wisopdracht gedurende de uitvoering van een eerste wisopdracht. De primaire wachtrij slaat een opdracht op tot het wissen van blok 5, de de positie vasthoudende opdracht, die op dat moment uitgevoerd wordt. Het RDY/lBSY-bit van blok 5 is op !BSY ingesteld. De secundaire wachtrij slaat de onderbrekende opdracht, tot het wissen van blok 4, op. De aanwezigheid van de opdracht in de secundaire wachtrij wordt gesignaleerd door het uitsturen van het onderbrekingssignaal opdracht gereed (command ready - CMDRDY), door de bewerkingswachtrij 204. Het eerste onderbrekingsvenster 300 dat wordt bereikt volgend op de ontvangst van de opdracht in de secundaire wachtrij zal de onderbreking die is veroorzaakt door de ontvangst van de opdracht tot het wissen van blok 4 afhandelen.
Figuur 8 illustreert in de vorm van een stroomdiagram hoe het onderbrekingsvenster 300 opdrachtonderbrekingen van de bewerkingswachtrij 204 af handelt. Om kort te gaan, bepaalt het onderbrekingsvenster 300 eerst of een onderbreking kan worden afgehandeld in de stappen 310 en 312. Indien de onderbrekingsvlaggen dit toestaan, behandelt het onderbrekingsvenster 300 wisopdrachtonderbrekin-gen in de stappen 314, 316, 318 en 320. Het onderbrekingsvenster 300 behandelt programmeeropdrachtonderbrekingen in de stappen 314, 316, 330, 332, 334, 336, 338, 340 en 342. Nadat de opdrachtonderbrekingen afgehandeld zijn, sluit het onderbrekingsvenster 300 het venster in feite door te voorkomen dat de bewerkingswachtrij 204 de uitvoering van het wissen onderbreekt behalve op een andere veilige lokatie.
Het onderbrekingsvenster 300 opent een venster in de tijd voor het af handelen van onderbrekingen van de bewerkingswachtrij 204 in stap 310 door de bewerkings-wachtrij-onderbrekingsvlag in te stellen. Daarna wordt in stap 312 bepaald of onderbrekingen kunnen worden afgehandeld gebaseerd op de toestand van de hoofdonderbrekings-vlag. Indien de hoofdonderbrekingsvlag is ingesteld dan neemt het onderbrekingsvenster 300 de aftakking van stap 312 naar stap 314. De wisbesturing 240 staat toe dat de hoofdonderbrekingsvlag ingesteld blijft, zolang als er geen programmeeropdracht in de secundaire wachtrij is, die niet onmiddellijk uitgevoerd kan worden. In het onderhavige voorbeeld, is de hoofdonderbrekingsvlag ingesteld omdat de bewerkingswachtrij 204 niet een dergelijke programmeeropdracht bevat. Het onderbrekingsvenster 300 reageert door vanaf stap 312 naar stap 314 af te takken.
Nadat bepaald is dat een onderbreking van de bewerkingswachtrij 204 nu kan worden afgehandeld, bepaalt het onderbrekingsvenster 300 gedurende stap 314 of er een af te handelen opdracht is. Het onderbrekingsvenster 300 voert deze bepaling uit gebaseerd op de toestand van CMDRDY. In het onderhavige voorbeeld is CMDRDY aangezet wat aangeeft dat zich een opdracht in de secundaire wachtrij bevindt. Het onderbrekingsvenster 300 reageert hierop door verder te gaan naar stap 316.
Het onderbrekingsvenster 300 inspecteert de tweede wachtrij gedurende de stap 316 teneinde het type opdracht te bepalen dat moet worden afgehandeld. In het onderhavige voorbeeld, bevat de secundaire wachtrij een opdracht tot het wissen van blok 4. Daarom takt het onderbrekingsvenster 300 af naar stap 318.
De opdracht tot het wissen van blok 4 wordt opgenomen gedurende stap 318 door het instellen van een opneembit in het blokstatusregister van blok 4. In één uitvoeringsvorm wordt het RDY/!BSY-bit van blok 4 gebruikt als het opneembit. Aldus geeft in deze uitvoeringsvorm het op !BSY zetten van het RDY/!BSY-bit van blok 4 voor de gebruiker aan, dat blok 4 bezig is en geeft het bovendien het opnemen aan van een wisopdracht voor blok 4 in de matrixbesturingseenheid 40. Na opname van de opdracht tot het wissen van blok 4, verwijdert het onderbrekingsvenster 300 de opdracht uit de secundaire wachtrij in stap 320, zoals geïllustreerd in figuur 7B. Dit stelt de bewerkings-wachtrij 204 in staat nog een andere opdracht van de gebruiker te ontvangen. Op deze wijze, is de matrixbesturingseenheid 40 in staat zoveel wisopdrachten als er blokken in de geheugenmatrix 50 zijn op te nemen, en aldus in de wachtrij te plaatsen.
Na voltooiing van zijn afhandeling van een onderbrekende wisopdracht, takt het onderbrekingsvenster 300 vanaf stap 320 af naar stap 322. Gedurende stap 322 wordt het tijdvenster waarin onderbrekingen worden af gehandeld gesloten door de bewerkingswachtrij-onderbrekings-vlag te blokkeren. Dit voorkomt het aanzetten van CMDRDY vanuit de uitvoering van een onderbrekende wisopdracht tot een ander onderbrekingsvenster 300 wordt bereikt. Het onderbrekingsvenster 300 hervat dan het wissen op een punt dat wordt aangegeven door een waarde die opgeslagen is in een onderbrekingsterugkeerregister in de matrixbesturingseenheid 40.
Hoe worden opgenomen wisopdrachten geïdentificeerd en uitgevoerd nadat ze zijn opgenomen? Beschouw, ten behoeve van de eenvoud, wederom de situatie na opname van de opdracht tot het wissen van blok 4, welke is geïllustreerd in figuur 7A. Neem verder aan, dat voortgezette uitvoering van de opdracht tot het wissen van blok 5 slechts onderbroken wordt door wisopdrachten, niet door programmeeropdrachten. Aldus is het prioriteitsregister, na uitvoering van stap 255 van de wisbesturing 240, nog steeds geïnitialiseerd. Aangezien het prioriteitsregister aangeeft dat niet zojuist een prioriteitswis heeft plaatsgevonden, takt de wisbesturing 240 vanaf stap 256 af naar stap 258. De wisbesturing 240 takt vanaf stap 258 af naar stap 260 aangezien het prioriteitsregister eveneens aan geeft dat er geen blok is gevlagd voor wissen met prioriteit.
Met stap 260 begint de wisbesturing 240 het proces van het identificeren en selecteren voor de uitvoering van een opgenomen wisopdracht. Gedurende stap 260 wordt het blok geheugen in de geheugenmatrix 50 met het adres met de hoogste waarde geselecteerd voor inspectie. De wisbesturingseenheid 240 bepaalt in stap 262 of een wisopdracht opgenomen is voor het voor inspectie geselecteerde blok. De wisbesturing 240 vervult deze taak door het RDY/!BSY-bit te lezen voor het voor inspectie geselecteerde blok. Indien het RDY/!BSY-bit op RDY gezet is, dan is geen wisopdracht opgenomen. De wisbesturing 240 reageert door af te takken naar stap 266. Daar wordt een ander blok geselecteerd voor inspectie door het blokadres vanaf zijn vorige waarde te verlagen. De wisbesturing 240 keert dan terug naar stap 262 voor het inspecteren van het opneembit dat behoort bij het nieuw geselecteerde blok. De eerste geïdentificeerde geabsorbeerde wisopdracht wordt uitgevoerd. Gegeven het besproken voorbeeld, zal de wisbesturing 240 tenslotte vanaf stap 262 aftakken naar stap 246, aangezien een opdracht tot het wissen van blok 4 wordt gevlagd door de ! BSY-toestand van het RDY/!BSY-bit daarvan. De wisbesturing 240 plaatst dan het adres van blok 4 in het vervangende adresregister 78 en begint de opdracht tot het wissen van blok 4 uit te voeren. Wanneer het wissen van blok 4 voltooid is, zal de wisbesturing 240 het RDY/!BSY-bit weer op RDY zetten.
De volgorde waarin opgenomen blokwisopdrachten voor uitvoering worden geselecteerd beïnvloedt de onderhavige werkwijze voor het opnemen en uitvoeren van blokwisopdrachten niet. Andere werkwijzen voor het selecteren van opgenomen blokwisopdrachten voor uitvoering zijn mogelijk en verenigbaar met de onderhavige werkwijze.
2C. Proarammeeropdrachtonderbrekinq van de uitvoering van het wissen zonder wissen met prioriteit
Het afhandelen van de onderbrekingen gedurende de uitvoering van een wisopdracht wordt complexer wanneer de onderbrekende opdracht een programmeeropdracht is. Beschouw eerst de relatief eenvoudige situatie die optreedt wanneer een blokwisopdracht niet is ontvangen voor hetzelfde blok dat behoort bij de onderbrekende programmeeropdracht. Figuur 9A illustreert een dergelijke situatie. Een programmeeropdracht behorende bij blok 1 is juist in de secundaire wachtrij geplaatst gedurende de uitvoering van de opdracht tot het wissen van blok 4. In reactie hierop zet de bewerkingswachtrij 204 het signaal CMDRDY aan. Het blok dat actueel gewist wordt, wordt aangegeven door het vervangende adresregister 78. De de positie vasthoudende opdracht, tot het wissen van blok 5, blijft in de primaire wachtrij van de bewerkingswachtrij 204.
Op een moment na ontvangst van" de opdracht tot het programmeren van blok 1 wordt een onderbrekingsvenster 300 bereikt. Uitvoering van stappen 310, 312 en 314 van het onderbrekingsvenster 300 gaat, zoals hiervoor besproken voort, omdat de hoofdonderbrekingsvlag is ingesteld en CMDRDY aangezet is. Het onderbrekingsvenster 300 takt daarom vanaf stap 314 af naar stap 316.
De opdracht die zich in de secundaire wachtrij bevindt wordt gedurende stap 316 geïnspecteerd. Het onderbrekingsvenster 300 reageert op identificatie van een programmeeropdracht door af te takken naar stap 330. Stap 330 begint het proces van het bepalen of er wisopdrachten zijn die moeten worden uitgevoerd voorafgaand aan uitvoering van de programmeeropdracht. Dit is een stappenproces van meerdere stappen. Het onderbrekingsvenster 300 bepaalt allereerst in stap 330 of het blok dat actueel gewist wordt het blok is dat moet worden geprogrammeerd. Indien dit zo is, is het wissen van het actuele blok een priori-teitswis en zal dit worden voltooid zonder onderbrekingen. In ons voorbeeld wordt blok 4 echter actueel gewist en heeft de programmeeropdracht betrekking op blok 1 (merk op dat het blok dat actueel gewist wordt nog steeds vooraf gaand aan de uitvoering van de programmeeropdracht kan worden gewist, zelfs indien het wissen daarvan geen prioriteit heeft). Het onderbrekingsvenster reageert door vanaf stap 330 af te takken naar stap 336.
Het onderbrekingsvenster 300 bepaalt gedurende stap 336 of het blok dat behoort bij de programmeeropdracht gereed is om te worden geprogrammeerd. Deze bepaling wordt uitgevoerd door inspectie van het RDY/!BSY-bit dat behoort bij het programmeerblok. Indien, zoals in het onderhavige voorbeeld, geen wisopdracht is opgenomen voor het programmeerblok; dat wil zeggen, dat het RDY/iBSY-bit gelijk is aan RDY, dan is het programmeerblok gereed om te worden geprogrammeerd. Het onderbrekingsvenster 300 takt af naar stap 338, teneinde het programmeerblok te programmeren. De uitvoering van de programmeeropdracht wordt niet onderbroken, omdat de programmeerfunctie geen onderbre-kingsvensters 300 bevat. Het onderbrekingsvenster 300 takt af naar stap 322 nadat de programmeeropdracht is uitgevoerd en gewist uit de secundaire wachtrij. Het onderbrekingsvenster 300 wordt dan gesloten in stap 322 en de matrixbesturingseenheid 40 keert terug naar de uitvoering van het wissen.
2D. Proarammeeropdrachtonderbrekinq van de uitvoering van het wissen bil wissen met prioriteit
De onderbreking van de uitvoering van een wisopdracht door een programmeeropdracht wordt gecompliceerder wanneer blokken geheugen gewist moeten worden voorafgaand aan de uitvoering van een programmeeropdracht. Dit kan in twee situaties plaatsvinden. Beschouw allereerst de eenvoudigste van deze twee situaties: een programmeeropdracht wordt ontvangen voor een blok dat actueel gewist wordt. Figuur 9B illustreert deze situatie. De secundaire wacht-rij bevat een opdracht tot het programmeren van een adres in blok 1 en CMDRDY is aangezet. Een wisopdracht voor blok 1 is eerder opgenomen, zoals aangegeven door de !BSY- toestand van het RDY/!BSY-bit ervan, en wordt nu uitgevoerd, zoals aangegeven door het adres ervan in het vervangende adresregister 78. Op dit moment, voorafgaand aan de uitvoering van stap 332, wordt het prioriteitsregister geïnitialiseerd, wat aangeeft dat geen prioriteitswis wordt uitgevoerd.
De opdrachtonderbreking die wordt weergegeven door het aanzetten van CMDRDY zal worden afgehandeld door het eerste onderbrekingsvenster 300 dat daarna bereikt wordt. Het onderbrekingsvenster 300 voert de stappen 310, 312, 314 en 316 uit en takt af naar stap 330 zoals hiervoor besproken is. Het onderbrekingsvenster 300 ontdekt gedurende de stap 330 dat het blok behorende bij de programmeeropdracht actueel gewist wordt. Aldus moet de wisopdracht die actueel wordt uitgevoerd, worden voltooid voorafgaand aan de uitvoering van de programmeeropdracht. In feite heeft het wissen van dat blok nu prioriteit. Het onderbrekingsvenster 300 reageert door af te takken naar stap 332 waar de waarde in het prior iteitsregister wordt veranderd teneinde aan te geven dat een prioriteitswis in uitvoering is. In één uitvoering, is de waarde die een prioriteitswis aangeeft 00 (hexadecimaal) . Daarna takt het onderbrekingsvenster 300 af naar stap 334.
Het onderbrekingsvenster 300 versnelt de uiteindelijke uitvoering van de programmeeropdracht door verdere onderbrekingen in de uitvoering van de opdracht tot het wissen met prioriteit te voorkomen. Het onderbrekingsvenster 300 bereikt dit door de hoofdonderbrekingsvlag in stap 334 te blokkeren. Het onderbrekingsvenster 300 blokkeert dan de bewerkingswachtrij-onderbrekingsvlag in stap 322 en hervat uitvoering van de onderbroken wisopdracht.
Uitvoering van de onderbroken en nu met prioriteit gegeven wisopdracht wordt nu hervat zonder enige verdere behandeling van onderbrekingen vanuit de bewer-kingswachtrij 204. De reden hiervoor is dat de geblokkeerde toestand van de hoofdonderbrekingsvlag zorgt dat hierna volgende onderbrekingsvensters 300 vanaf stap 312 aftakken naar stap 322, waarbij ze de behandeling van onderbrekingen overslaan. Wanneer de uitvoering van de wisopdracht met prioriteit voltooid is, verandert de wisbesturing 240 het relevante RDY/!BSY-bit in RDY in stap 255, wat aangeeft dat andere opdrachten op het blok kunnen worden uitgevoerd.
De wisbesturing 240 is nu vrij zijn aandacht te richten op uitvoering van de programmeeropdracht die de prioriteitswis veroorzaakte. Dit wordt gedaan in stap 256 door te bepalen of een prioriteitswis zojuist heeft plaatsgevonden door het prioriteitsregister te onderzoeken. In het onderhavige voorbeeld, geeft het prioriteitsregister aan dat een prioriteitswis zojuist heeft plaatsgevonden. De wisbesturing 240 takt daarom af naar stap 270, waar hij het prioriteitsregister op zijn geïnitiali-seerde waarde terugzet. Vervolgens verzekert de wisbesturing 240 in stap 272 dat het volgende onderbrekingsvenster 300 dat wordt bereikt de programmeeropdracht zal afhandelen. De wisbesturing 240 doet dit door de hoofdonderbre-kingsvlag aan te zetten. In één uitvoering, wordt dit gedaan door middel van de opdracht tot het instellen van de onderbrekingsvlag (enable interrupt flag - ENI). De wisbesturing 240 gaat dan verder vanaf stap 272 naar een onderbrekingsvenster 300.
Blok 1 is nu gereed om te worden geprogrammeerd en zal dat worden. De uitvoering van het onderbrekingsvenster 300 gaat verder door af te takken middels de stappen 310, 312, 314, 330, 336 en 338, zoals hierboven besproken.
Beschouw nu de tweede situatie waarin de uitvoering van een programmeeropdracht voorafgegaan moet worden door uitvoering van eerder ontvangen blokwisopdrachten. Dit is het geval wanneer een programmeeropdracht wordt ontvangen voor een blok dat voor wissen gevlagd is maar dat actueel niet gewist wordt. Figuur 9C illustreert deze situatie. De secundaire wachtrij bevat een opdracht tot het programmeren van blok 1. Een wisopdracht voor blok 1 is opgenomen, zoals aangegeven door de !BSY-toestand van het RDY/iBSY-bit daarvan. Blok 4 wordt op dat moment gewist, wat wordt aangegeven door de toestand van het RDY/!BSY-bit daarvan en het adres daarvan in het vervangende adresregister 78. Het prioriteitsregister is geïni-tialiseerd aangezien actueel geen prioriteitswis wordt uitgevoerd. Bovendien is de hoofdonderbrekingsvlag ingesteld en is de bewerkingswachtrij-onderbrekingsvlag geblokkeerd.
Wanneer een onderbrekingsvenster 300 wordt bereikt na ontvangst van de programmeeropdracht, reageert het onderbrekingsvenster 300 op de situatie die geïllustreerd is in figuur 9C door de stappen 310, 312, 314, 316 en 330 uit te voeren en stap 336 te bereiken, zoals hiervoor besproken is. Het onderbrekingsvenster 300 ontdekt gedurende stap 336 dat het te programmeren blok, blok 1, niet gereed is om te worden geprogrammeerd aangezien het RDY/!BSY-bit ervan eerdere opname van een wisopdracht voor blok 1 aangeeft. Dit betekent dat niet één, maar twee wisopdrachten moeten worden uitgevoerd voorafgaand aan de uitvoering van de programmeeropdracht (aanpassing van de matrixbesturingseenheid 40 teneinde het opslaan toe te staan van de actuele toestand van de wisopdracht zonder prioriteit, dat wil zeggen de opdracht tot het wissen van blok 4, zou dat aantal tot één reduceren, slechts de prioriteitswisopdracht). Het onderbrekingsvenster 300 reageert op deze situatie door het blok behorende bij de programmeeropdracht voor eerstvolgend wissen te vlaggen. Het onderbrekingsvenster 300 doet dit in stap 340 door het adres van het te programmeren blok, blok 1 in ons voorbeeld, in het prioriteitsregister op te slaan. Wanneer dit gedaan is, wordt snelle uitvoering van de onderbroken wisopdracht, het wissen van blok 4 in ons voorbeeld, verzekerd door de hoofdonderbrekingsvlag in stap 342 te blokkeren. Het onderbrekingsvenster 300 blokkeert dan de bewerkingswachtrij-onderbrekingsvlag in stap 322 en keert terug naar de onderbroken routine.
De uitvoering van de onderbroken wisopdracht gaat nu voort zonder enige onderbrekingsafhandeling, zoals hierboven besproken. De wisbesturing 240 takt nogmaals af naar stap 256 teneinde te bepalen of een prioriteitswis zojuist heeft plaatsgevonden. Dat is niet het geval volgens het onderhavige voorbeeld, daarom takt de wisbesturing vanaf stap 256 af naar stap 258. De wisbesturing 240 bepaalt in stap 258 of er een wisopdracht is waarvan de uitvoering prioriteit heeft door het prioriteitsregister te inspecteren. Volgens het voorbeeld, geeft het prioriteitsregister aan dat het wissen van blok 1 prioriteit heeft; dat wil zeggen blok 1 dient eerstvolgend te worden gewist. Aldus wordt gedurende stap 280 het adres dat is opgeslagen in het prioriteitsregister in het vervangende adresregister 78 geplaatst teneinde een bewerking van dat blok mogelijk te maken. De wisbesturing 240 verandert dan de in het prioriteitsregister opgeslagen waarde teneinde aan te geven dat een prioriteitswis in uitvoering is. Dit wordt gedaan in stap 282.
De wisbesturing 240 begint nu het blok dat wordt aangegeven door het vervangende adresregister 78 te wissen door terug af te takken naar stap 246. Het wissen van dit blok vindt eveneens plaats zonder enige afhandeling van onderbrekingen van de bewerkingswachtrij 204 hoewel niettemin CMDRDY is aangezet. Dit is zo omvat de hoofdonder-brekingsvlag geblokkeerd blijft. De wisbesturing 240 takt daarom nogmaals af naar stap 256. Dit keer heeft zojuist een prioriteitswis plaatsgevonden. De wisbesturing 240 handelt de uitvoering van de programmeeropdracht die de prioriteitswis veroorzaakte af door af te takken via de stappen 270, 272 en 300 zoals hiervoor besproken.
Tenslotte zal er een moment komen, waarop alle onderbrekende programmeeropdrachten en opgenomen wisopdrachten uitgevoerd zijn. Wanneer dit gebeurt, takt de wisbesturing 240 vanaf stap 264 af naar stap 268. De de positie vasthoudende opdracht wordt tenslotte gewist uit de bewerkingswachtrij 204. De wisbesturing 240 stopt dan de uitvoering tot ontvangst van de volgende wisopdracht.
Figuur 10 illustreert in de vorm van een blokdi-agram een persoonlijke computer 400. De persoonlijke computer 400 omvat een centrale verwerkingseenheid (central processing unit - CPU) 402 en een monitor 404 voor het visueel weergeven van informatie voor een computergebruiker. Een toetsenbord 406 staat de computergebruiker toe gegevens in de CPU 402 in te voeren. Door het bewegen van de muis 408 is de computergebruiker in staat een wijzer die is weergegeven op de monitor 404 te bewegen. De computergebruiker kan eveneens gegevens in de CPU 402 invoeren onder gebruikmaking van een op een pen gebaseerd tablet 409, dat gegevens opslaat die daarin worden ingevoerd onder gebruikmaking van een schrijfstift, pen, potlood, leespen of een ander voorwerp dat geschikt is voor handbediening. Een geheugen 410 slaat gegevens op die gebruikt worden door de CPU 402. Het geheugen 410 omvat in het typische geval een magnetisch schijfaandrijfmechanisme voor massageheugenopslag. Het geheugen omvat in het typische geval eveneens een niet-vluchtige geheugeninrichting 20 voor opslag van gegevens die vaak en snel benaderd moeten worden.
2E. Samenvatting
Aldus is een werkwijze beschreven voor het onderbreken van de uitvoering van een wisopdracht teneinde een daarna ontvangen programmeeropdracht uit te voeren. Eveneens is een werkwijze beschreven voor het opnemen van blokwisopdrachten die het in een wachtrij plaatsen toestaat van één blokwisopdracht voor elk geheugenblok, terwijl toch de diepte van de bewerkingswachtrij beperkt is. Het verlenen van onderlinge prioriteiten aan opgenomen blokwisopdrachten vindt plaats als reactie op onderbrekende programmeeropdrachten.
In de voorgaande beschrijving, is de uitvinding beschreven onder verwijzing naar bijzondere uitvoerings-voorbeelden daarvan. Het zal echter duidelijk zijn dat verschillende aanpassingen en veranderingen daarop kunnen worden uitgevoerd zonder de bredere zin en de omvang van de uitvinding zoals die is uiteengezet in de bijgevoegde conclusies, te verlaten. De beschrijving en tekeningen dienen dienovereenkomstig niet in beperkende, doch in illustratieve zin te worden beschouwd.

Claims (25)

1. Werkwijze voor het in een wachtrij plaatsen van een eerste aantal wisopdrachten in een niet-vluchtige geheugeninrichting die is voorzien van een bewerkings-wachtrij voor het in de wachtrij plaatsen van wisopdrachten , welke bewerkingswachtrij twee deelrijen omvat, waarbij de niet-vluchtige geheugeninrichting een hoofdgeheugenmatrix heeft die een tweede aantal geheugen-blokken heeft, welk tweede aantal geheugenblokken groter is dan het aantal deelrijen dat omvat is in de bewerkingswachtrij , waarbij het eerste aantal wisopdrachten groter is dan een aantal deelrijen dat omvat is in de bewerkingswachtrij , en waarbij elke wisopdracht behoort bij een geheugenblok, welke werkwijze de volgende stappen omvat: a) het onderbreken van de uitvoering van een eerste wisopdracht behorende bij een eerste blok als reactie op de ontvangst van een tweede wisopdracht behorende bij een tweede geheugenblok in de bewerkingswachtrij; b) het opnemen van de opdracht tot het wissen van het tweede blok; en c) het vrijgeven van de bewerkingswachtrij voor het ontvangen van toe te voegen opdrachten.
2. Werkwijze volgens conclusie 1, verder omvattende de volgende stap: e) het hervatten van de uitvoering van de eerste wisopdracht na stap c).
3. Werkwijze volgens conclusie 2, verder omvattende : f) het uitvoeren van de tweede wisopdracht.
4. Werkwijze volgens conclusie 3, verder omvattende : g) het bepalen of er wisopdrachten opgenomen zijn.
5. Werkwijze voor het, in een niet-vluchtige halfgeleidergeheugeninrichting die voorzien is van een eerste aantal geheugenblokken en een bewerkingswachtrij voor het opslaan van gebruikersopdrachten, verlenen van prioriteit aan een programmeeropdracht behorende bij een eerste geheugenblok wanneer een wisopdracht behorende bij het eerste geheugenblok is opgenomen, welke werkwijze de volgende stappen omvat: a) indien een wisopdracht behorende bij een tweede blok actueel wordt uitgevoerd, dan: 1. het voltooien van het wissen van het tweede blok; 2. het wissen van het eerste blok; en 3. het programmeren van het eerste blok.
6. Werkwijze volgens conclusie 5, waarin stap al) plaatsvindt zonder onderbreking.
7. Werkwijze volgens conclusie 5, waarin stap a2) plaatsvindt zonder onderbreking.
8. Werkwijze volgens conclusie 5, waarin stap a3) plaatsvindt zonder onderbreking.
9. Werkwijze volgens conclusie 5, waarin een wisopdracht is opgenomen voor een derde geheugenblok, en waarin de stappen al), a2) en a3) voorafgaand aan het wissen van het derde blok worden uitgevoerd.
10. Werkwijze voor het, in een niet-vluchtige halfgeleidergeheugeninrichting die is voorzien van een eerste aantal geheugenblokken en een bewerkingswachtrij voor het opslaan van gebruikersopdrachten, verlenen van prioriteit aan een programmeeropdracht behorende bij een eerste geheugenblok waarvoor eerder een wisopdracht werd ontvangen, welke werkwijze de volgende stappen omvat: a) indien een wisopdracht behorende bij het eerste blok actueel wordt uitgevoerd, dan 1. het voltooien van het wissen van het eerste blok; en 2. het programmeren van het eerste blok.
11. Werkwijze volgens conclusie 10, waarin stap al) plaatsvindt zonder onderbreking.
12. Werkwijze volgens conclusie 10, waarin stap a2) plaatsvindt zonder onderbreking.
13. Werkwijze voor het, in een niet-vluchtige halfgeleidergeheugeninrichting die voorzien is van een eerste aantal geheugenblokken en een bewerkingswachtrij voor het opslaan van gebruikersopdrachten, verlenen van prioriteit aan een wisopdracht behorende bij een eerste geheugenblok na ontvangst van een programmeeropdracht behorende bij het eerste blok, welke werkwijze de volgende stappen omvat: a) indien een wisopdracht behorende bij een tweede blok in uitvoering is bij ontvangst van de programmeeropdracht: 1. het voltooien van het wissen van het tweede blok; 2. het wissen van het eerste blok; 3. het programmeren van het eerste blok; b) indien een wisopdracht behorende bij het eerste blok in uitvoering is bij ontvangst van de programmeeropdracht, dan: 1. het voltooien van het wissen van het eerste blok; en 2. het programmeren van het eerste blok.
14. Werkwijze volgens conclusie 13, waarin stap al) plaatsvindt zonder onderbreking.
15. Werkwijze volgens conclusie 13, waarin stap a2) plaatsvindt zonder onderbreking.
16. Werkwijze volgens conclusie 13, waarin stap a3) plaatsvindt zonder onderbreking.
17. Werkwijze volgens conclusie 13, waarin stap bl) plaatsvindt zonder onderbreking.
18. Werkwijze volgens conclusie 13, waarin stap b2) plaatsvindt zonder onderbreking.
19. Werkwijze volgens conclusie 13, waarin een wisopdracht behorende bij een derde geheugenblok is opgenomen en waarin de stappen al), a2) en a3) worden uitgevoerd voorafgaand aan het wissen van het derde blok.
20. Werkwijze voor het, in een niet-vluchtige halfgeleidergeheugeninrichting die voorzien is van een eerste aantal geheugenblokken en een bewerkingswachtrij voor het opslaan van gebruikersopdrachten, afhandelen van de onderbreking van het wissen van een eerste geheugenblok wegens een programmeeropdracht behorende bij een tweede geheugenblok, welke werkwijze de volgende stappen omvat: a) het bepalen of het tweede blok voorafgaand aan de uitvoering van de programmeeropdracht dient te worden gewist; en b) indien het tweede blok niet voorafgaand aan de uitvoering van de programmeeropdracht hoeft te worden gewist, het programmeren van het tweede blok voorafgaand aan de voltooiing van het wissen van het eerste blok.
21. Werkwijze volgens conclusie 20, waarin stap a) het bepalen omvat, of het wissen van het tweede blok werd onderbroken door ontvangst van de programmeeropdracht .
22. Werkwijze volgens conclusie 21, waarin stap a) verder het bepalen omvat, of voorafgaand aan de ontvangst van de programmeeropdracht een wisopdracht behorende bij het tweede blok ontvangen was.
23. Werkwijze volgens conclusie 21, waarin het tweede blok dient te worden gewist voorafgaand aan het programmeren van het tweede blok, wanneer bepaald is dat het wissen van het tweede blok werd onderbroken door ontvangst van de programmeeropdracht.
24. Werkwijze volgens conclusie 22, waarin het tweede blok dient te worden gewist voorafgaand aan het programmeren van het tweede blok, wanneer bepaald is dat een wisopdracht behorende bij het tweede blok ontvangen was voorafgaand aan ontvangst van de programmeeropdracht.
25. Niet-vluchtig halfgeleidergeheugen, omvat tende : a) een geheugenmatrix die is geordend als een eerste aantal geheugenblokken; b) een bewerkingswachtrij voor het opslaan van opdrachten tot bewerking van de geheugenmatrix, welke bewerkingswachtrij een tweede aantal deelrijen omvat; en c) een besturingseenheid voor het uitvoeren van opdrachten die in de bewerkingswachtrij zijn opgeslagen, welke besturingseenheid omvat: 1. onderbrekingsmiddelen die kunnen reageren op de ontvangst van een tweede opdracht door de bewerkingswachtrij voor het onderbreken van de uitvoering van een eerste opdracht die is opgeslagen in de bewerkingswachtrij; en 2. wisopdrachtopneemmiddelen die kunnen reageren op de onderbrekingsmiddelen voor het opnemen van de tweede opdracht en het vrijgeven van de bewerkingswachtrij voor het ontvangen van een andere opdracht, en het daarbij vrijgeven van het niet-vluchtige halfgeleidergeheugen voor het in de wacht-rij plaatsen van een derde aantal opdrachten dat groter is dan het tweede aantal deelrijen.
NL9401779A 1993-10-26 1994-10-26 Werkwijze voor het verlenen van prioriteiten aan en opslaan van opdrachten in een geheugeninrichting. NL194901C (nl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14329393A 1993-10-26 1993-10-26
US14329393 1993-10-26

Publications (3)

Publication Number Publication Date
NL9401779A true NL9401779A (nl) 1995-05-16
NL194901B NL194901B (nl) 2003-02-03
NL194901C NL194901C (nl) 2003-06-04

Family

ID=22503430

Family Applications (1)

Application Number Title Priority Date Filing Date
NL9401779A NL194901C (nl) 1993-10-26 1994-10-26 Werkwijze voor het verlenen van prioriteiten aan en opslaan van opdrachten in een geheugeninrichting.

Country Status (4)

Country Link
US (3) US5802343A (nl)
BE (1) BE1007932A7 (nl)
FR (1) FR2711831B1 (nl)
NL (1) NL194901C (nl)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JP3173407B2 (ja) * 1997-02-05 2001-06-04 日本電気株式会社 フラッシュeeprom内蔵マイクロコンピュータ
US5905905A (en) * 1997-08-05 1999-05-18 Adaptec, Inc. System for copying IOBS from FIFO into I/O adapter, writing data completed IOB, and invalidating completed IOB in FIFO for reuse of FIFO
US5920501A (en) * 1997-12-12 1999-07-06 Micron Technology, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US20040100982A1 (en) * 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
US6606674B1 (en) * 2000-02-24 2003-08-12 Intel Corporation Method and apparatus for reducing circular list's thrashing by detecting the queues' status on a circular linked list
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
JP4230122B2 (ja) * 2001-03-30 2009-02-25 株式会社ルネサステクノロジ マイクロコンピュータ、書込み方法及び消去方法
US6614695B2 (en) * 2001-08-24 2003-09-02 Micron Technology, Inc. Non-volatile memory with block erase
US6898680B2 (en) * 2003-01-03 2005-05-24 Micrel, Incorporated Minimization of overhead of non-volatile memory operation
US7328301B2 (en) * 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US6865122B2 (en) 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
ITRM20030354A1 (it) * 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
US7509452B2 (en) * 2004-01-19 2009-03-24 Ricoh Company, Ltd. Image forming apparatus, erasing method, and hard disk management method
KR101051703B1 (ko) 2004-08-09 2011-07-25 삼성전자주식회사 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템
ITMI20041904A1 (it) * 2004-10-07 2005-01-07 Atmel Corp "metodo e sistema per un approccio di programmazione per un dispositivo elettronico non volatile"
US7496722B2 (en) * 2005-04-26 2009-02-24 Hewlett-Packard Development Company, L.P. Memory mapped page priorities
KR100843136B1 (ko) * 2006-11-14 2008-07-02 삼성전자주식회사 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법
US8099632B2 (en) * 2007-08-08 2012-01-17 Sandisk Technologies Inc. Urgency and time window manipulation to accommodate unpredictable memory operations
US8074021B1 (en) 2008-03-27 2011-12-06 Netapp, Inc. Network storage system including non-volatile solid-state memory controlled by external data layout engine
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US10445226B2 (en) 2010-08-10 2019-10-15 Rambus Inc. Verify before program resume for memory devices
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US8659954B1 (en) * 2011-09-14 2014-02-25 Adesto Technologies Corporation CBRAM/ReRAM with improved program and erase algorithms
DE102012022728A1 (de) * 2012-11-21 2014-05-22 Unify Gmbh & Co. Kg Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US10318193B2 (en) * 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4752871A (en) * 1985-09-30 1988-06-21 Motorola, Inc. Single-chip microcomputer having a program register for controlling two EEPROM arrays
US5034922A (en) * 1987-12-21 1991-07-23 Motorola, Inc. Intelligent electrically erasable, programmable read-only memory with improved read latency
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
EP0376285B1 (en) * 1988-12-27 1994-03-09 Nec Corporation Microcomputer having electrically erasable and programmable nonvolatile memory
DE69033438T2 (de) * 1989-04-13 2000-07-06 Sandisk Corp Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5065364A (en) * 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
JPH04221496A (ja) * 1990-03-29 1992-08-11 Intel Corp 単一基板上に設けられるコンピュータメモリ回路およびコンピュータメモリを消去するためのシーケンスを終らせる方法
US5333300A (en) * 1991-02-11 1994-07-26 Intel Corporation Timing circuitry and method for controlling automated programming and erasing of a non-volatile semiconductor memory
FR2672709B1 (fr) * 1991-02-11 1994-09-30 Intel Corp Machine d'etat d'ordre.
US5355464A (en) * 1991-02-11 1994-10-11 Intel Corporation Circuitry and method for suspending the automated erasure of a non-volatile semiconductor memory
US5245572A (en) * 1991-07-30 1993-09-14 Intel Corporation Floating gate nonvolatile memory with reading while writing capability
JP2632104B2 (ja) * 1991-11-07 1997-07-23 三菱電機株式会社 不揮発性半導体記憶装置
US5224070A (en) * 1991-12-11 1993-06-29 Intel Corporation Apparatus for determining the conditions of programming circuitry used with flash EEPROM memory
JPH06131889A (ja) * 1992-10-14 1994-05-13 Toshiba Corp 半導体ファイル装置
US5369616A (en) * 1992-10-30 1994-11-29 Intel Corporation Method for assuring that an erase process for a memory array has been properly completed
US5341330A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5353256A (en) * 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5509134A (en) * 1993-06-30 1996-04-16 Intel Corporation Method and apparatus for execution of operations in a flash memory array

Also Published As

Publication number Publication date
FR2711831B1 (fr) 1997-09-26
BE1007932A7 (fr) 1995-11-21
NL194901C (nl) 2003-06-04
NL194901B (nl) 2003-02-03
FR2711831A1 (fr) 1995-05-05
US5802343A (en) 1998-09-01
US5956742A (en) 1999-09-21
US5809541A (en) 1998-09-15

Similar Documents

Publication Publication Date Title
NL194901C (nl) Werkwijze voor het verlenen van prioriteiten aan en opslaan van opdrachten in een geheugeninrichting.
US5559988A (en) Method and circuitry for queuing snooping, prioritizing and suspending commands
US5509134A (en) Method and apparatus for execution of operations in a flash memory array
KR101662824B1 (ko) 고체 상태 드라이브 장치 및 그것의 구동 방법
US9075712B2 (en) Scheduling requests in a solid state memory device
US6996821B1 (en) Data processing systems and method for batching tasks of the same type in an instruction cache
US6201739B1 (en) Nonvolatile writeable memory with preemption pin
KR920001101B1 (ko) 마이크로프로세서와 그 내부의 레지스터장치
US7302518B2 (en) Method and system for managing a suspend request in a flash memory
JP3588311B2 (ja) ディスク・ドライブへコマンドを出すかどうかを決定する方法及びディスク・コントローラ
US20100169546A1 (en) Flash memory access circuit
EP2214103A1 (en) I/O controller and descriptor transfer method
KR101996641B1 (ko) 메모리 오버레이 장치 및 방법
JPH07121444A (ja) 補助記憶装置
KR20010050853A (ko) 기록 커맨드를 수행하기 위한 방법 및 직접 액세스 저장장치
US10459658B2 (en) Hybrid data storage device with embedded command queuing
JPH065515B2 (ja) キャッシュ再ロード・オーバーヘッドを減少させる方法およびコンピュータ・システム
JPH07160569A (ja) メモリ制御装置
JPH09146767A (ja) プログラム書き換え方法
JP2630215B2 (ja) オンライン中のファイル不要データ削除方式
JPH11154096A (ja) フラッシュメモリの管理装置及びフラッシュメモリの管理方法、割り込み管理装置及び割り込み管理方法
JPH0628182A (ja) 情報処理装置
KR20210051718A (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2006215615A (ja) 情報記録再生装置およびその制御方法
JPS617976A (ja) ベクトル演算処理装置

Legal Events

Date Code Title Description
BA A request for search or an international-type search has been filed
BB A search report has been drawn up
BC A request for examination has been filed
V1 Lapsed because of non-payment of the annual fee

Effective date: 20110501