NL8502848A - Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren. - Google Patents

Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren. Download PDF

Info

Publication number
NL8502848A
NL8502848A NL8502848A NL8502848A NL8502848A NL 8502848 A NL8502848 A NL 8502848A NL 8502848 A NL8502848 A NL 8502848A NL 8502848 A NL8502848 A NL 8502848A NL 8502848 A NL8502848 A NL 8502848A
Authority
NL
Netherlands
Prior art keywords
register
output
instruction
program
data processing
Prior art date
Application number
NL8502848A
Other languages
English (en)
Original Assignee
Philips Nv
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 Philips Nv filed Critical Philips Nv
Priority to NL8502848A priority Critical patent/NL8502848A/nl
Priority to US06/914,049 priority patent/US4761734A/en
Priority to DE8686201792T priority patent/DE3676451D1/de
Priority to EP86201792A priority patent/EP0223273B1/en
Priority to JP61245611A priority patent/JPS6295635A/ja
Publication of NL8502848A publication Critical patent/NL8502848A/nl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

Μ * PHN 11.525 1 N.V. Philips' Gloeilampenfabrieken te Eindhoven Dataverwerkingsinrichting voorzien van een diskreetstapper oa een prograaaasprong te realiseren.
BESCHRIJVING: ACHTERGROND VAN DE UITVINDING:
De uitvinding betreft een dataverwerkingsinrichting, volgens de kop van conclusie 1. Als relevante stand van de techniek 5 wordt genoead de Nederlandse octrooiaanvrage 8304442 (PHN 10.886), over-eenkoastige Amerikaanse octrooiaanvrage serial no. 663 730 van dezelfde geassigneerde. Het dataverwerkingseleaent voert bewerkingen uit op data en/of adressen. In gekoapliceerde uitvoeringen kunnen ook aeerdere bewerkingen parallel worden uitgevoerd, bijvoorbeeld oa een pijplijneffekt te 10 realiseren. De bewerkingen worden uitgevoerd onder besturing van een pro-graaaa dat is opgebouwd uit instrukties. Het prograaaa kan vast zijn, maar het is ook aogelijk het programma wijzigbaar te aaken. De geciteerde octrooiaanvrage behelst een geïntegreerde en programmeerbare processor voor woordsgewijze digitale signaalbewerking, ook wel vektorproces-15 sor genoead. Daartoe zijn onder meer parallelle databussen, een afzonderlijk vermenigvuldigingselement, een arithmetische en logische eenheid, en afzonderlijke adresbewerkingseleaenten aanwezig. De onderhavige uitvinding is ook toepasbaar voor dataverwerkingsinrichtingen die als aeerdere geïntegreerde schakelingen zijn uitgevoerd, en zulke die niet 20 voor vektorbewerkingen, maar bijvoorbeeld voor algemene doelen zijn uitgevoerd, en dataverwerkingsinrichtingen met een kleinere aate van faciliteiten. Evenwel is het ook aogelijk oa nog aeer van zulke faciliteiten te implementeren, bijvoorbeeld een separate adresbus en meerdere dataver-werkingseleaenten.
25 GESELEKTEERDE DOELEINDEN VAN DE UITVINDING:
In vele prograaaafs komen sprongen voor: al dan niet afhankelijk van een bepaalde uitkomst van een eerdere bewerking aoet een keuze gedaan worden tussen twee of meer volgende bewerkingen. Als er een 30 keuze gedaan moet worden tussen twee mogelijkheden bestaat er een vertakking (branching) in het programma. Veelal is bij het laatste de struk-tuur van het prograaaa zodanig, dat bij een eerste uitkomst de prograaaa- 8382848 \ PHN 11.525 2 i (· t \ teller uitsluitend geinkrementeerd behoeft te worden, zodat de stand met één wordt verhoogd. Dit kost slechts weinig tijd omdat daarvoor gespecialiseerde onderdelen zijn voorzien en er met name geen informatie-toevoer uit (ver) verwijderde onderdelen van de inrichting behoeft 5 plaats te vinden. Voor het uitvoeren van een programmasprong moet de programmateller met nieuwe informatie worden geladen, waartoe deze informatie veelal via de besturingsbus moet worden aangevoerd. Deze operatie kost extra tijd, vergeleken met het direkte inkrementeren. Bovendien moeten daartoe veelal extra instrukties in het programma worden geschre-10 ven waardoor het programma langer wordt. Ook het uitvoeren van deze extra instrukties kost tijd. Het bovenstaande programma betreft het programma op het niveau van de dataverwerkingsinrichting (machinetaal) en niet een programma in een zogenoemde hogere programmeertaal. In de laatste zijn expressies van bijvoorbeeld de vorm (if A then B else C); 15 mogelijk. Deze laatste kan echter als bekend slechts door een reeks van meerdere machine-instrukties uitvoerbaar worden gemaakt. Het is een doelstelling van de uitvinding om het uitvoeren van programmasprongen, met name zulke welke konditioneel uitvoerbaar zijn, te versnellen, door een eenvoudige toevoeging aan onderdelen, en waarbij bovendien een grote 20 mate van flexibiliteit aanwezig blijft.
SAMENVATTING VAN DE UITVINDING:
De uitvinding realiseert de doelstelling doordat hij het kenmerk heeft als gereciteerd in het kenmerk van conclusie 1.
25 Op zichzelf zijn diskreetstappers bekend geworden. Het aantal verschillende toestanden van zo'n onderdeel is eindig en bekend. De verschillende toestanden zijn met elkaar verbonden in een netwerk. Deze eerste realisatie van de uitvindingsgedachte is vooral voordelig in gevallen waarin slechts één instruktie behoeft te worden 30 overgeslagen. Door de vergelijking in speciaal toegevoegde onderdelen te realiseren, wordt een grote beslissingssnelheid gerealiseerd. In veel gevallen komt deze realisatie erop neer alsof het programma van twee verschillende inkrementatiemechanismes wordt voorzien, namelijk één die de stand met één verhoogd, en één die de stand met twee ver-35 hoogt. Door het mechanisme met de loze instruktie twee of meer malen te herhalen, is het met dezelfde onderdelen mogelijk om een reeks van instrukties over te slaan in een sprong over meerdere geheugenplaatsen. De S 3% Λ Ü /, fi
-O J 'é J- iJ *? O
% *» PHN 11.525 3 realisatie net een loze operatie is voordeliger dan het voorzien van de prograaaateller aet een tweede inkreaentatieaogelijkheid waardoor de pro-graaaatellerstand aet twéé verhoogd zou worden. In het laatste geval zou de onderlinge synchronisatie tussen verschillende in pijplijn uit te 5 voeren operaties niet behouden blijven. En aet name in gekoapliceerdere dataverwerkingsinrichtingen draagt zo'n pijplijnorganisatie op zichzelf veel aan de grote verwerkingssnelheid bij. Bij een loze operatie, die op zichzelf wel enige tijd kost, blijft de pijplijnorganisatie onverlet.
10 Het is gunstig als genoemde diskreetstapper bevat een eerste dekodeerschakeling, waarvan een uitgang verbonden is aet een verder register, dat uitgangen van genoead verder register zijn verbonden net de vergelijker en voorts teruggekoppeld zijn op de eerste dekodeerschakeling, en dat de eerste dekodeerschakeling voorts gevoed 15 wordt door een tekensignaaluitgang van de bewerker. Dit is een bijzonder eenvoudige uitvoering van de diskreetstapper. Andere uitvoeringen kunnen evenwel ook voordelig zijn.
ENKELE VERDERE ASPEKTEN VAN DE UITVINDING: 20 Het is gunstig als genoead uitgangsregister voorzien is van een verdere paralleluitgang ter adressering van een tweede dekodeerschakeling (KROM), en dat een uitgang van de tweede dekodeerschakeling is aangesloten op genoemde databus. Zo kan de diskreetstapper ook infor-aatie afgeven on in verdere onderdelen van de rekennachine-inrichting te 25 gebruiken.
Het is gunstig als besturingsmiddelen aanwezig zijn on een uitgang van genoeade tweede dekodeerschakeling in een laadoperatie te koppelen net een data-ingang van de prograaaateller. Zo is een on-niddellijke laadoperatie van de prograaaateller aet name uitvoerbaar 30 zonder dat een toegang tot het programaageheugen en verdere, langdurige operaties nodig zijn.
Verdere voordelige aspekten worden in een verdere onderconclusie gereciteerd.
35 KORTE BESCHRIJVING VAN DE FIGUREN:
De uitvinding wordt nader uitgelegd aan de hand van enkele figuren, waarbij eerst ter verduidelijking de geciteerde stand 8302 3 43 £ i PHN 11.525 4 der techniek wordt gerekapituleerd, vervolgens de uitbreiding van een dataverwerkingsinrichting volgens de uitvinding, en tenslotte voorbeelden van de versnelling van de uitvoering, respektievelijk de vereenvoudigde struktuur van het uit te voeren programma(gedeelte).
5 Figuur 1 geeft een blokschema van een vektorprocessor.
Figuur 2 geeft in detail een bekende oplossing.
Figuur 3 geeft in twee opvolgende niveau's verbeteringen welke realiseerbaar zijn door de uitvinding.
Figuur 4 illustreert een op te lossen probleem.
10 Figuur 5 geeft daarbij een stroomdiagram.
Tabellen 1-14 geven illustraties bij verschillende algorithmes.
KORTE BESCHRIJVING VAN EEN DATAVERWERKINGSINRICHTING: 15 Figuur 1 geeft een blokschema van een vektorprocessor vol gens de geciteerde octrooiaanvrage. Als reeds gesteld, kan de uitvinding ook toegepast worden bij andere kategorieën van dataverwerkingsin-richtingen. Het blokschema is bedoeld om op een enkel substraatelement (chip) te worden geïntegreerd. De interne verbinding wordt geèffek-20 tueerd door een eerste 16-bits informatiebus 22 en een tweede 16-bits in-formatiebus 20. Deze vormen samen de databus die ook voor adressen wordt gebruikt. De schakeling bevat een aantal registers, waarvan er een deel rechtstreeks op één of beide bussen is aangesloten, namelijk de elementen 24, 26, 34, 46, 48, 50, 56 (deze laatste twee via een selektie-25 element), 70, 72, 74, 88, 100, 104, 106, 118, 120, 116. Element 30 is een programmateller, en adresseert een programmageheugen 28 met een kapa-citeit van 512 woorden a 40 bits, die in het instruktieregister 26 kunnen worden geladen. Van deze instrukties besturen de meeste bits verdere funkties in de rest van de schakeling via eenvoudshalve niet nader aange-30 geven verbindingen die tesamen deel uitmaken van een besturingsbus.
Voorts kan een zestienbits deel aan de databus worden toegevoerd, en wel aan beide informatiebussen 20, 22. Programmateller 30 kan gelnkremen-teerd worden tot de naasthogere stand. Voorts is programmateller 30 laad-baar ófwel door 9 bits uit het instruktieregister 26, ofwel door een 35 adres uit selekterend register 24, ofwel door een adres uit 8-woords-stapelregister 158. Register 24 werkt als adresregister en is op beide bussen geschakeld (namelijk op dezelfde manier als elementen 34, 70, 78:
|5 !?, ifS 0 ζ Q
& ïj 'ij li» ij te Q
* ‘Λ ΡΗΝ 11.525 5 unidirektioneel met bus 22, bidirektioneel met bus 20). In een eenvoudige uitvoering is het laadmechanisae van prograaaateller 30 alleen voor zien vanuit de uitgang van instruktieregister 26. Naast de besproken uitgangen van het instruktieregister 26, die tesaaen deel uitaaken van de 5 besturingsbus, maken daarvan ook andere hier niet besproken besturings-lijnen deel uit.
Element 90 is een datageheugen dat in dit voorbeeld is gerealiseerd als een alleen-leesgeheugen van 512 woorden a 16 bits.
Voorts zijn elementen 36, 102 datageheugenmodules, elementen 38, 92, 114 10 adresberekeningseenheden, elementen 66, 78 selektors voor de twee bus-sen. De registers 48, 100, 106 behoren bij de adresberekeningseenheden die kortheidshalve niet nader worden uitgelegd.Verder hebben sommige registers als getoond (bijvoorbeeld 88, 104, 46, 72, 74, 34) selekte-rende aansluitingen naar de twee bussen. Registers 50, 56 zijn als al 15 dan niet transparante registers werkzaam. Element 58 is een 16 x 16 bits veraenigvuldigingselement.Element 64 is een 40-bits akkumulatoropteller. Element 68 is een 40-bits akkuaulatorregiser. Element 78 is een bidirek-tioneel-werkende selektor. Element 122 is een arithmetische en logische eenheid. Element 116 is een geheugen met 3 aansluitingen (ports) dat 20 gebruikt wordt als een verzameling kladblok- of werkgeheugens. Voorts zijn de elementen 80, 82, 84, 86, 130, 132 invoer/uitvoereenheden voor koaaunikatie met de buitenwereld.
De registers hebben de volgende funkties: 48 : instantaanadresregister voor RAM 36 (ARA) 25 46 : dataregister op de uitgang van RAM 36 (DRA) 106 : instantaanadres voor RAM 102 (ARB) 104 : dataregister op uitgang RAM 102 (DRB) 50, 56 : twee al dan niet transparant-werkende registers aan de ingangen van het veraenigvuldigingselement (MXL, MYL) 30 60 : produktregister (PR) 68 : akkumulatorregister (ARC) 72, 74 : registerdelen voor respektievelijk het meest-signifikante en het minst-signifikante produktgedeelte (MSP, LSP) 70 : register voor het besturen van het verschuivingselement 62 35 (BSR) 118, 120 : twee al dan niet transparant-werkende registers aan de ingang van ALÜ 122 (AXI,, AYL) S3 3 2 3 4 8 X * PHN 11.525 6 116 : vijftien kladblokregisters (RO ... R14) 40, 94, 108 : basisadresregisters (AA, RA, BA) 42, 96, 110 : verschuivingsadresregisters (AS, RS, BS) 44, 98, 112 : adresmaskeringsregisters (AM, RM, BM) 5 84, 132 : seriële uitgangsregisters voor de twee bussen (SOX, SOY) 82, 130 : seriële ingangsregisters voor de twee bussen (SIX, SIY) 86 : gemultiplext parallel in/uitgangsregister (PO, PI) 80 : additioneel parallel uitgangsregister (ADO).
10 FUNKTIONELE BESCHRIJVING:
De dataprocessor kan onder synchronisatie door een niet-separaat aangegeven klok tot 10 miljoen machine-instrukties per sekonde uitvoeren. Dit wordt gerealiseerd doordat meerdere instrukties parallel kunnen worden uitgevoerd middels een pijplijnorganisatie. Daarbij zijn 15 de twee parallel-funktionerende informatiebussen werkzaam om het transport snel te maken. De kommunikatie met de buitenwereld wordt verzorgd door I/O-aanpaseenheden zowel voor seriële als parallelle kommunikatie. Er zijn drie datageheugens voorzien, namelijk twee lees-schrijf-geheugens en één alleen-leesgeheugen die alle voorzien zijn van een 20 eigen adresberekeningseenheid. Het vermenigvuldigingselement 58 is gekom-bineerd met een 40-bits akkumulator 64/68 en schuifeenheid 62 voor algemene doeleinden.
BESCHRIJVING VAN TWEE VOORKEURSUITVOERINGEN: 25 Hierna worden twee voorkeursuitvoeringen volgens de uit vinding beschreven, waarbij kortheidshalve alleen de omgeving van pro-grammateller, programmageheugen en instruktieteller wordt gegeven. Ter vergelijking geeft figuur 2 een principe-blokschakeling van een eenvoudige representant van de bekende oplossing. De elementen hebben over-30 eenkomstige nummers als in figuur 1. Zo zijn getoond programmateller 30, programmageheugen 28 en instruktieregister 26. De terugkoppeling van register 26 naar programmateller 30 loopt via besturingsbus 200 en multiplexer 202. De besturingsbus 200 voert verder besturingssignalen toe aan allerlei elementen van de dataverwerkingsinrichting, zoals data-35 verwerkingselement, lees-schrijfgeheugen en aansluitelement voor aansluiting op de buitenwereld. De breedte van programmateller is meestal veel kleiner dan de breedte van instruktieregister 26 (eventueel kan 3502 84 8 PHN 11.525 7 register 26 een uitgangsdekodeur bevatten on de besturingsbits uitgede-kodeerd af te geven). Element 204 is een inkreaenteur. Dit element kan een strukturele voorziening binnen de programmateller zijn, waardoor de telfunktie wordt gerealiseerd met doorgave van overdrachtsinformatie 5 tussen opvolgende tellertrappen. Als multiplexer 202 doorlatend is voor de bovenste ingang, wordt de programmatellerstand met 1 opgehoogd. Als multiplexer 202 doorlatend is voor de onderste ingang, dan wordt pro-grammateller 30 met nieuwe informatie geladen. De besturing van de multiplexer 202 gebeurt door besturingseenheid 31. Dit is bijvoorbeeld 10 een op zichzelf bekende verdere diskreetstapper (finite state machine), die door een aantal vlagbits (FLGS) wordt bestuurd om de besturings-kodebit(s) CC af te geven. Zo zijn bijvoorbeeld de volgende funkties uitvoerbaar: - een aanroep(CALL)instruktie 15 - een sprong(JUMPJinstruktie - een terugkeer(RETURN)instruktie, hiervoor is een niet-aangegeven registerstapel nodig waarvan een uitgang ook op multiplexer 202 is aansloten - een herhaalinstruktie.
20 De multiplexer 202 kan ook nog zijn aangesloten op de databus (zie ook figuur 1) om een informatie, bijvoorbeeld aan het dataverwerkingselement of aan een geheugen te ontlenen. Eenvoudshalve is de besturing op het niveau van de klokpulscyklus niet getoond. Ook de inwendige struktuur van diskreetstapper 31 is niet getoond. Hij kan ook bijvoorbeeld als 25 enkelvoudige dekodeur zijn uitgevoerd, dus zonder terugkoppelmechanisme als te tonen bij de diskreetstapper in figuur 3.
Figuur 3 geeft in twee opvolgende niveau's verbeteringen die realiseerbaar zijn volgens de uitvinding. Op een eerste niveau zijn de toevoegingen de elementen 206, 208, 218. Het onderste 30 deel van de figuur is goeddeels overeenkomstig met figuur 2. De multiplexer is niet afzonderlijk weergegeven, wel het besturingssignaal IiD/INCR voor de programmateller die selekteert tussen laden en inkremen-teren. Het laden kan in dit geval gebeuren via óf de besturingsbus CBUS, of één van de twee databussen DABUS, DBBUS. Het laatste is een 35 onmiddellijk-ladendoad immediate)operatie. Verder is aangegeven een laadsignaal LD voor instruktieregister 26. De tweede ingang van program-mateller 30 is aangegeven als CDABBÜS. Eventueel is weer een diskreet- 8502348 •i f ΡΗΝ 11.525 8 stapper als element 31 in figuur 2 voorzien. Binnen een machinecyklus is de besturing niet aangegeven. De besturingssignalen LD voor de elementen 30 en 26 behoeven dus niet afhankelijk en synchroon te zijn.
Blok 206 stelt voor een programmeerbaar logisch arrange-5 ment (PLA). Dit geeft een konditiekode af (CC), die in dit geval een breedte van één bit bezit. Deze laatste bit wordt onder besturing van een besturingpuls (SHFT) opgeslagen en doorgeschoven in een schuif-register 208, dat in dit geval een bitlengte van drie heeft. Van dit register is een paralleluitgang aangesloten op de vergelijker CONP 10 (218). Verder zijn de paralleluitgangen van register 208 teruggekoppeld naar ingangen van programmeerbaar logisch arrangement 206. Voortdurend vormt dit laatste element dus een konditiekodebit, die onder besturing van opvolgende schuifpulsen wordt opgeslagen.
Op deze manier realiseren de elementen 206 en 208 tesamen 15 een diskreetstapper. Deze wordt nog bestuurd door voorwaardesignalen, in dit geval zijn dit bijvoorbeeld de waarde van de tekenbit in een uit-gangsresultaat van de arithmetische en logische eenheid (SGNALü). Voorts is een tweede voorwaardesignaal (SGNACC) de waarde van de tekenbit in een uitgangsresultaat van de akkumulator (die zich in figuur 1 bevindt 20 aan de uitgangszijde van de vermenigvuldiger).
Op zichzelf kan de diskreetstapper op andere manier gerealiseerd worden. Het doel is slechts dat op een paralleluitgang een meerbitsgrootheid ter vergelijking disponibel is. Zo kunnen er meer konditiekodebits tegelijk worden uitgegeven. Verder kan het schuiven op 25 andere manier worden bestuurd. Dit kan bijvoorbeeld gebeuren middels een beperkte selektie uit de instruktievoorraad. Als meerdere konditiekodebits parallel worden afgegeven, kunnen deze parallel aan verschillende schuifregisters worden toegevoerd die onderling onafhankelijke schuif-pulsen ontvangen. Verder is het niet noodzakelijk dat de elementen 206 30 en 218 dezelfde bitselekties ontvangen. Essentieel is echter hier dat er konditiekodebits uit verschillende achtereenvolgende instruktieperioden aanwezig zijn, zodat de diskreetstapper op een gekompliceerder niveau werkt dan een dekodeur. Als gesteld, behoeft deze beperking voor element 31 uit figuur 2 niet te gelden.
35 Het instruktieregister 26 bezit verschillende uitgangen.
In de eerste plaats zijn er evenveel uitgangen gekoppeld met de onderste ingang van vergelijker 218 als deze bovenste ingangen heeft vanuit 8502 8 4 8 PHN 11.525 9 (hier) schuifregister 208. Verder is een aansluiting 224 via register RX(216) aangesloten op een informatiebus, in dit voorbeeld op alleen de informatiebus 222. Verder is als vermeld een aansluiting op de bestu-ringsbus (CBUS) voorhanden. De drie besproken uitgangen vormen tesamen 5 alle uitgangen van instruktieregister 26. Ze kunnen al dan niet (gedeeltelijk) samenvallen. Het toevoeren van instruktiebits aan data- en/of besturingsbus is besproken in de geciteerde referentie en wordt niet nader uitgelegd. Zo kan dus door voortdurende inkrementering van program-mateller 30 een reeks van opvolgende instrukties uit het programmage-10 heugen 28 worden opgeroepen en uitgevoerd. Voorts kan de programmateller geladen worden via één of meer van de drie bussen CBUS, DABUS of DBBUS , tesamen symbolisch aangegeven als de ingang CDABBUS.
De uitbreiding met diskreetstapper en vergelijker wordt nu op de volgende manier gebruikt: als de vergelijker 218 (die wordt ge-15 aktiveerd door een aangegeven synchronisatiesignaal) aangeeft dat er een eerste gelijkheidskonditie bestaat, bijvoorbeeld "ongelijk", dan is het uitgangsbesturingssginaal REPL "1* en gebeurt er niets bijzonders, dat wil zeggen daarna wordt de normale behandeling uitgevoerd: ófwel de instruktie wordt uitgevoerd en daarop wordt de programma-20 teller gelnkrementeerd ofwel de programmateller wordt geladen via de CDABBUS-ingang. Het geldigheidssignaal VALID (niet in de figuur aangegeven) heeft daarvan de omgekeerde waarde. De gebruikte logika heeft een "aktief-laag" niveau. In het geval de tweede gelijkheidskonditie bestaat, bijvoorbeeld "gelijk", dan is het uitgangsbesturingssignaal 25 ΙΕΡΕ gelijk aan "0". Dit heeft tot gevolg dat daarop de programmateller wordt gelnkrementeerd en dat de dan in het instruktieregister 26 verschijnende instruktie als een loze instruktie NOP wordt beschouwd, zodat deze geen dataverwerkingsoperatie tot gevolg heeft. Vervolgens wordt de programmateller in de volgende machinecyklus opnieuw 30 gelnkrementeerd, en wordt de dan volgende instruktie in instruktieregister 26 uitgevoerd. Op die manier kan een instruktie worden overgeslagen, wat neerkomt op een zeer snel uitvoeren van een sprongoperatie zonder dat daarvoor een relatief tijdrovende laadoperatie van de programmateller nodig is. Een toepassingsvoorbeeld zal hierna worden gegeven.
35 Op een tweede niveau van uitbreiding zijn voorzien een tweede dekodeerschakeling, hier een dood geheugen XROH(210), een register RA (212) en een register RB(214). Dekodeerschakeling 210 ontvangt in dit
,3 λ Λ ^ Q Λ O
& V U ώ· V ^ V
PHN 11.525 10 voorbeeld dezelfde bits als vergelijker 218 en arrangement 206. Deze drie bits worden gedekodeerd om een informatie aan êén of aan beide databussen te kunnen toevoeren. De informatie kan via de databus toegevoerd worden of wel aan de programmateller in een "onmiddellijk-5 laden"operatie (load immediate), ofwel aan verdere elementen van de dataverwerkingsinrichting. Met name in het eerste geval wordt geen geheugentoegang vereist hetgeen in een grote snelheid resulteert. Het gebruik van deze aanvulling zal later worden besproken. Ook in dit geval is het niet nodig dat'de dekodeerschakeling 210 dezelfde bitselektie 10 ontvangt als vergelijker 218 en arrangement 206. Het is duidelijk dat deze verdere uitbreiding ook gebruikt kan worden als er slechts één informatiebus is, en eveneens ter toevoer van informatie aan een specifiek adres indien aanwezig, bijvoorbeeld een geheugenpositie of een register. Onder omstandigheden kunnen nog de betekenissen van de twee 15 beschreven gelijkheidskondities worden omgewisseld, eventueel onder besturing van een extra signaal. Het is ook mogelijk om bepaalde bit-posities van de vergelijker 218 door een specifiek besturingssignaal in een insignifikante (don't care) mode aan te sturen.
20 BESCHRIJVING VAN EEN GEBRÖIKSVOORBEELD:
Figuur 4 illustreert een op te lossen probleem, in dit geval het berekenen van een benadering van een parabolische funktie: y=(x)^2, met behulp van zes koëfficienten A(1 .. 3), B(1 .. 3).
Figuur 5 geeft daarbij een stroomdiagram. In blok 230 worden twee 25 koëfficienten opgehaald (na het uitvoeren van een eenvoudshalve niet-aangegeven startoperatie). In blokken 232, 234 wordt gedetekteerd in welk gebied de waarde van x zich bevindt. Al naar gelang de uitkomst worden twee andere parameterwaarden opgehaald 236, 238, dan wel wordt een loze operatie (240) uitgevoerd. Daarna wordt de funktiewaarde zelf 30 bepaald, en eventueel gebruikt, maar dat laatste wordt kortheidshalve niet nader besproken.
Tabel 1 geeft de uitvoeringsvolgorde op de architektuur van figuur 2. Omwille van de pipelines tussen programmateller, programma-geheugen en instruktieregister moet elke sprong gevolgd worden door een 35 "N0P"-instruktie. Deze implementatie vergt 14 instrukties in het program-mageheugen. Het aantal uitvoeringscykli kan variëren maar bedraagt maximaal 10.
8502348 PHN 11.525 11
De oplossing van figuur 3, eerste niveau (zonder dekodeer-geheugen 210) kan ditzelfde algorithme efficiënter uitvoeren. In principe ziet de microkode er uit als volgt: <opcode> <source X> <source Y> <dest X> <dest Y> <ACÜ> <C0ND> <FSM>.
5 De in de geciteerde octrooiaanvrage gegeven velden bevatten respektie-velijk de operatiekode, twee broneleaenten die een gegeven leveren voor de twee inforaatiebussen, twee bestemmingselementen waar deze twee gegevens voor bestead zijn, en een informatie (ACU) voor de adresbereke-ningseenheden. In vergelijking met de microkode van de geciteerde 10 octrooiaanvrage zijn er twee speciale velden bijgekoaen namelijk COND en FSM.
a) FSM veld onafhankelijk van de rest van de instruktie en parallel daaraan kan de FMS worden bestuurd. De gebruiker kan een aantal instrukties 15 definiëren, bijvoorbeeld SHSET : schuift konditiebits en zet een nieuw CC konditiekodebit gelijk aan het teken van het huidige ALU resultaat SET : zoals de vorige maar overschrijf de konditiebit C2 COUNT : shuift konditiebits als CC - 1 (zie hierna) 20 Om deze drie instrukties te kunnen definiëren, moet het FSM-veld tenminste twee bits bevatten.
b) COND veld indien er 3 konditiekodebits zijn (C3, C2 en C1) dan is dit een veld van 3 bits waarin een bepaalde kode kan worden geschreven, 25 bijvoorbeeld <instruktie> <001>: deze instruktie, gespecificeerd door <instruktie>, zal alleen worden uitgevoerd indien C3 = C2 = 0 en C1 = 1. Als er op meerdere plaatsen in een programma verschillende keuzes gemaakt moeten worden, dient dit veld ook de respektievelijke plaatsen te identificeren, hetgeen gewoonlijk extra bitpositie(s) in 30 het veld nodig maakt.
Indien een instruktie moet worden onderdrukt, kan dit gebeuren met het REPEr-signaal. De bestemmingselementen worden dan alle in een loze (NOP)-toestand geschakeld en alle arithmetische verwerkingsblokken (ALU, adres-bewerkingseleaenten, vermenigvuldiger) in de dataverwerkingsinrichting 35 gaan in de houdmode zoals dit voor de bekende dataverwerkingsinrichting is beschreven.
De uitvoering is geschetst in tabel 2. Deze implementatie 'j V 2 3 4 8 ΡΗΝ 11.525 12 * Η.
vergt 8 instrukties in het programmageheugen. Het aantal uitvoerings-cykli bedraagt eveneens 8.
De oplossing van figuur 3, tweede niveau (met de tweede dekodeerschakeling 210) kan ditzelfde algorithme efficiënter uitvoeren.
5 De konditiebits worden ook gebruikt als adresbits voor de tweede dekodeerschakeling (X-ROM). Als er een leesaktie gebeurt, dan komt de data terecht in één of beide registers RA en RB. Dit zijn twee gewone registers die deel uitmaken van het datapad dat wil zeggen bestuurd door de normale bronindikatievelden. In sommige gevallen (zoals in het voor-10 beeld) kan één register (RA) eveneens volstaan.
De uitvoering is geschetst in tabel 3, de inhoud van dekodeerschakeling 210 en het datageheugen (bijvoorbeeld geheugen 102 in figuur 1) is getoond in tabel 4.
Tabellen 5,6,7 geven de uitwerking van een tweede 15 voorbeeld, voor dezelfde drie oplossingen, namelijk: gegeven is een array van 8 elementen. Gevraagd is hoeveel elementen kleiner zijn dan een bepaald getal (0). Dit voorbeeld zal worden uitgewerkt met "straight line coding" dat wil zeggen zonder loops of subroutines. De eerste oplossing kost vier instrukties per element van het array. De tweede op-20 lossing kost twee instrukties per element. De derde oplossing kost slechts één instruktie per element: het dekodeergeheugen bevat aan het eind de tellerstand. Het schuifregister 208 biedt nu plaats aan acht konditiekodebits. Het geheugen XROM bevat negen woorden met inhouden volgens tabel 8. De uitbreiding van de dataverwerkingsinrichting nodig 25 voor het tweede voorbeeld kan ook die van het eerste voorbeeld realiseren, bijvoorbeeld doordat voor het eerste voorbeeld vijf verdere bits van het register dat overeenkomt met register 218 als loos (don't care) gelden. Dit kan bijvoorbeeld gebeuren door de vergelijker in een linkerdeel (drie bits) en een rechterdeel (vijf bits), te splitsen. Het 30 rechterdeel wordt dan voor het eerste voorbeeld niet beschouwd. Zo kan de gelijkheidskonditie ook slechts een partiële gelijkheid/ongelijk-heid impliceren.
Tabellen 9, 10, 11, 12 geven op dezelfde manier de uitwerking van een derde voorbeeld. Gegeven zijn drie getallen a, b en d.
35 Het middelste van deze drie moet worden gevonden. Voor een groter aantal getallen kan op overeenkomstige manier de mediaan worden gevonden. Voor elke mogelijke kombinatie van twee getallen moet het schuifregister O ~Λ· 9 ^ f β O 0 \i i 3 ^ Ö PHN 11.525 13 één bit kunnen bevatten. Voor drie getallen dus drie, voor vijf ge-
•I
tallen tien; in totaal voor n getallen ·4ι(η-1). Ook hier geldt 2 weer dat als de kapaciteit van het schuifregister, respektievelijk de adreslengte van dekodeerschakeling XROM voldoende is, alle gemelde voor-5 beelden kunnen worden geïmplementeerd.
Tabel 13 geeft voor elk van de getoonde drie problemen I, II, III en voor elk van de drie oplossingen A, B, C eerste het benodigde aantal instrukties, en vervolgens het aantal voor de uitvoering benodigde aantal machinecykli.
10 Om aan te tonen hoe krachtig deze architektuur is om beslissingen te nemen, kan het derde voorbeeld worden uitgebreid om een mediaanfilter te maken. Er komt dan een kontinue stroom van input samples binnen (namelijk a, b, c, d, ...) en telkens moet een output sample worden berekend wat gelijk is aan de middelste waarde van de 3 15 laatstbinnengekomen samples. Het gebruik van het schuifregister voor de konditiebits zal hier erg nuttig blijken. Het programma is getoond in tabel 14.
De beschreven onderdelen kunnen op verschillende manieren worden uitgevoerd. Zo kunnen de dekodeerschakelingen (206 en 210 in 20 figuur 3) worden uitgevoerd als programmeerbaar logisch arrangement (PLA of FPLA), als PROM, ROM of RAM, of zelfs als wilde logika.
OPMERKINGEN BIJ DE TABELLEN:
Tabel 3, regel 3: om performanceredenen wordt hier een 25 extra cyklus ingelast; regel 4: gebruik in houdregister RA als direkt adres voor het data RAM.
De leesoperatie daarna kan dan A1, A2 of A3 zijn; tabellen 5, 6: "TELLER'· is teller.
8502848

Claims (5)

1. Dataverwerkingsinrichting (data processing apparatus), bevattende een bewerker (processor), een lees-schrijf-geheugen, een aansluitelement (interface element)voor aansluiting op de buitenwereld, en een databus om genoemde onderdelen onderling te verbinden, en voorts, 5 bevattende een programmateller, een door de programmateller (30) geadresseerd programmageheugen (28), een op een data-uitgang van het programma-geheugen aangesloten instruktieregister (26), en een besturingsbus (200) die is aangesloten op het instruktieregister om besturingssignalen aan de bewerker, het lees-schrijf-geheugen en het aansluitelement toe te 10 voeren, en waarbij de programmateller voorzien is van middelen om in een . eerste alternatief een inkrementeringsoperatie uit te voeren middels een voorzien inkrementeringselement (204), respektievelijk in een tweede alternatief een laadoperatie uit te voeren en daartoe een data-ingang bezit die is aangesloten op de besturingsbus om daarvan een sprongadres 15 te ontvangen ter uitvoering van een eerste programmasprong, welke alternatieven geselekteerd worden door een verder besturingssignaal op de besturingsbus, met het kenmerk, dat er voor het uitvoeren van een verdere programmasprong is voorzien een teruggekoppelde diskreetstapper (finite state machine) (206, 208), waarvan een konditiesignaalingang ver-20 bonden is met de besturingsbus en die een meerbits-brede informatie-uitgang bezit die gevoed wordt door een uitgangsregister waarvan de in-houdsbits in tenminste twee opvolgende machinecykli gevormd zijn, dat de meerbits-brede informatie-uitgang is aangesloten op een vergelijker (218) om aan die vergelijker een konditiekode toe te voeren, welke ver-25 gelijker ten andere gevoed wordt door uitgangen van het instruktieregister om bij detektie van een eerste gelijkheidskonditie (ongelijk) tussen de ontvangen informaties een aktuele instruktie te valideren, respektievelijk om bij detektie van een tweede gelijkheidskonditie (gelijk) tussen de ontvangen informaties in een derde alternatief de aktuele instruk-30 tie te invalideren, waardoor als dan genoemde aktuele instruktie als een loze instruktie (NOP) werkt en daarop een naastvolgende instruktie wordt geaktiveerd.
2. Dataverwerkingsinrichting volgens conclusie 1, met het kenmerk, dat genoemde diskreetstapper bevat een eerste dekodeerschake-35 ling (206), waarvan een uitgang verbonden is met een verder register (208), dat uitgangen van genoemd verder register zijn verbonden met de vergelijker en voorts teruggekoppeld zijn op de eerste dekodeerschake- 85 0 2 8 4 8 PHN 11.525 15 ling, en dat de eerste dekodeerschakeling voorts gevoed wordt door een tekensignaaluitgang (207) van de bewerker.
3. Dataverwerkingsinrichting volgens conclusie 1 of 2, waarbij de diskreetstapper voorzien is van een uitgangsregister (208), set 5 het kenmerk, dat genoemd uitgangsregister voorzien is van een verdere paralleluitgang ter adressering van een tweede dekodeerschakeling (XROM), en dat een uitgang van de tweede dekodeerschakeling is aangesloten op genoemde databus (220, 222).
4. Dataverwerkingsinrichting volgens conclusie 3, met het 10 kenmerk, dat besturingsmiddelen aanwezig zijn om een uitgang van genoemde tweede dekodeerschakeling in een laadoperatie te koppelen met een data-ingang van de programmateller.
5. Dataverwerkingsinrichting volgens één der conclusies 1 tot en met 4, met het kenmerk, dat hij als op een enkel substraatele-15 ment aangebrachte signaalprocessor is uitgevoerd, en dat genoemde bewerker een afzonderlijke vermenigvuldiger en een afzonderlijke arithme-tische en logische eenheid bevat, die zijn gekoppeld met de databus en met de besturingsbus. 8502848
NL8502848A 1985-10-18 1985-10-18 Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren. NL8502848A (nl)

Priority Applications (5)

Application Number Priority Date Filing Date Title
NL8502848A NL8502848A (nl) 1985-10-18 1985-10-18 Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren.
US06/914,049 US4761734A (en) 1985-10-18 1986-10-01 Data-processing apparatus provided with a finite-state machine to perform a program jump
DE8686201792T DE3676451D1 (de) 1985-10-18 1986-10-15 Datenverarbeitungsanlage mit einem endlichen automaten zum ausfuehren eines programmsprunges.
EP86201792A EP0223273B1 (en) 1985-10-18 1986-10-15 A data-processing apparatus provided with a finite-state machine to perform a program jump
JP61245611A JPS6295635A (ja) 1985-10-18 1986-10-17 デ−タ処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL8502848A NL8502848A (nl) 1985-10-18 1985-10-18 Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren.
NL8502848 1985-10-18

Publications (1)

Publication Number Publication Date
NL8502848A true NL8502848A (nl) 1987-05-18

Family

ID=19846731

Family Applications (1)

Application Number Title Priority Date Filing Date
NL8502848A NL8502848A (nl) 1985-10-18 1985-10-18 Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren.

Country Status (5)

Country Link
US (1) US4761734A (nl)
EP (1) EP0223273B1 (nl)
JP (1) JPS6295635A (nl)
DE (1) DE3676451D1 (nl)
NL (1) NL8502848A (nl)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0766327B2 (ja) * 1987-11-25 1995-07-19 三菱電機株式会社 信号処理方法及び装置
CA2045735A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
US5619408A (en) * 1995-02-10 1997-04-08 International Business Machines Corporation Method and system for recoding noneffective instructions within a data processing system
US20060186874A1 (en) * 2004-12-02 2006-08-24 The Board Of Trustees Of The University Of Illinois System and method for mechanical testing of freestanding microscale to nanoscale thin films
US7502916B2 (en) * 2005-12-02 2009-03-10 Infineon Technologies Flash Gmbh & Co. Kg Processing arrangement, memory card device and method for operating and manufacturing a processing arrangement

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1480209A (en) * 1974-07-03 1977-07-20 Data Loop Ltd Digital computers
FR2288352A1 (fr) * 1974-10-15 1976-05-14 Burroughs Corp Appareil et procede de traitement de donnees par association
JPS55127606A (en) * 1979-03-23 1980-10-02 Nissan Motor Co Ltd Fail safe method of control computer
US4554630A (en) * 1981-08-24 1985-11-19 Genrad, Inc. Control apparatus for back-driving computer memory and forcing execution of idle loop program in external memory
NL8304442A (nl) * 1983-12-27 1985-07-16 Koninkl Philips Electronics Nv Geintegreerde en programmeerbare processor voor woordsgewijze digitale signaalbewerking.

Also Published As

Publication number Publication date
US4761734A (en) 1988-08-02
DE3676451D1 (de) 1991-02-07
EP0223273A1 (en) 1987-05-27
JPS6295635A (ja) 1987-05-02
EP0223273B1 (en) 1991-01-02

Similar Documents

Publication Publication Date Title
RU2111531C1 (ru) Схемное устройство для параллельной обработки двух или более команд в цифровом компьютере
EP0474297B1 (en) Very long instruction word machine for efficient execution of programs with conditional branches
US7725687B2 (en) Register file bypass with optional results storage and separate predication register file in a VLIW processor
US7844803B2 (en) Configurable data processing device with bit reordering on inputs and outputs of configurable logic function blocks
RU2109333C1 (ru) Цифровой компьютер с возможностью параллельного выполнения двух и более команд
US4943916A (en) Information processing apparatus for a data flow computer
EP0543415B1 (en) Controlling register read operations
US7346881B2 (en) Method and apparatus for adding advanced instructions in an extensible processor architecture
US5481746A (en) Vector shift functional unit for successively shifting operands stored in a vector register by corresponding shift counts stored in another vector register
US6425070B1 (en) Variable length instruction decoder
RU2000132719A (ru) Смешанный файл векторных/скалярных регистров
EP0942359B1 (en) An apparatus for executing instructions of a program
US6145074A (en) Selecting register or previous instruction result bypass as source operand path based on bypass specifier field in succeeding instruction
WO2004004191A2 (en) Digital signal processor with cascaded simd organization
EP0492968A2 (en) Multiple instruction issue
NL8502848A (nl) Dataverwerkingsinrichting voorzien van een diskreetstapper om een programmasprong te realiseren.
JP5052713B2 (ja) 条件付き命令を備えるベクトルデータプロセッサ
US5867696A (en) Saving a program counter value as the return address in an arbitrary general purpose register
WO2000068783A2 (en) Digital signal processor computation core
WO2001097054A2 (en) Synergetic data flow computing system
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
Sinha et al. 8 Bit Single Cycle Processor
Craig et al. PIPE: A High Performance VLSI Processor Implementation
Katz et al. PIPE: A HIGH PERFORMANCE VLSI PROCESSOR IMPLEMENTATION GL Craig JR Goodman
Craig et al. Computer Sciences Technical Report# 513

Legal Events

Date Code Title Description
A1B A search report has been drawn up
BV The patent application has lapsed