ontwerp met één cyclus met behulp van en gedeeld geheugen voor zowel gegevens als instructies

Dit is niet echt een kwestie van elektronica, het is meer een vraag over logisch ontwerp.
Ik hoop dat dit de juiste plaats is om te vragen.

Hoe komt het dat het niet mogelijk is dat twee een ontwerp met één cyclus gebruiken en een enkel geheugen hebben voor zowel gegevens als instructies?

Ik bedoel, waarom is het niet mogelijk om dat ene geheugen te benaderen met het adres dat we op de pc vinden en dan weer toegang te krijgen via het adres dat we in de instructie vinden?

Bedankt

0

1 antwoord

Uw vraag is een aantal aannames die het niet zou moeten doen. U hebt dit echter grotendeels zelf beantwoord.

In het algemeen kan een geheugen één toegang per keer doen. Omdat het ophalen van de instructie en het ophalen van de operand twee afzonderlijke toegangen zijn op twee afzonderlijke adressen, moeten ze achtereenvolgens worden uitgevoerd met traditionele herinneringen. Zelfs als dat niet het geval is, moet de instructie eerst worden opgehaald voordat u weet dat de bewerking een gegevensophaal vereist en vervolgens naar welk adres. De logische volgorde is inherent sequentieel.

Dat gezegd hebbende, er zijn verschillende versnellingstechnieken die verder gaan dan het conceptuele eenvoudige schema van een traditionele processor. Het zou te lang zijn om hier in te komen, maar drie die onmiddellijk in je opkomen zijn caching, pipelining en afzonderlijke instructie- en datageheugens. Al deze worden in de huidige reguliere producten in verschillende mate gebruikt. Echte moderne processors zijn niet meer zo eenvoudig als wat u aanneemt in uw vraag.

De meeste kleine microcontrollers gebruiken bijvoorbeeld een harvard-architectuur, wat aparte instructie- en datageheugens betekent. Ze kunnen tegelijkertijd toegang krijgen omdat ze afzonderlijke geheugens zijn. Er is echter nog steeds de kwestie van het moeten ophalen en decoderen van de instructie alvorens te weten wat, als er iets is, moet worden gelezen van of worden geschreven naar het datageheugen. Dit wordt meestal in verschillende mate aangepakt met pipelining, pre-fetching en andere technieken.

Ik kan hier niet een volledige cursus op cursusniveau over computerarchitectuur reproduceren, maar hopelijk heb ik je genoeg trefwoorden gegeven zodat je zelf veel meer informatie kunt vinden.

5
toegevoegd
Het kan de moeite waard zijn om op te merken dat als men geheugens implementeert met behulp van flip-flops en multiplexers, het toevoegen van meer leespoorten betekent gewoon meer multiplexers toevoegen, maar de meeste praktische geheugenapparaten gebruiken verschillende trucs om geheugenbits een stuk kleiner te maken dan flip-flops. Dual-geport geheugens moeten een andere lay-out hebben die meer of minder dan tweemaal de ruimte van single-ported kan innemen (ik vermoed waarschijnlijk minder dan twee keer de ruimte voor een RAM die twee reads of één write kan herbergen, maar meer dan tweemaal de ruimte voor een ruimte die plaats biedt aan twee leesmomenten of een lees- en schrijfbewerking).
toegevoegd de auteur firedfly, de bron
Er zijn dingen zoals "dual ported memories", maar soms zijn dit slechts zorgvuldig gesequenceerde toegangen onder de motorkap. In ieder geval hebt u nog steeds het probleem dat u de instructie moet decoderen voordat u weet welke toegang tot gegevens vereist kan zijn.
toegevoegd de auteur Olin Lathrop, de bron
en wat als we een geheugen hebben met twee leespoorten?
toegevoegd de auteur Serhiy, de bron
Dual-ported geheugens zijn veel complexer dan standaard single-ported. Zoveel dat ze (bijna?) Uitsluitend worden gebruikt om CPU-registers te implementeren. In andere situaties is het veel effectiever om het vereiste siliciumgebied te wijden aan het groter maken van het geheugen.
toegevoegd de auteur tomzx, de bron