11
votes

Pouvons-nous avoir un ordinateur avec simplement des registres comme mémoire?

Les registres sont les mémoires les plus rapides d'un ordinateur. Donc, si nous voulons construire un ordinateur avec juste des registres et même pas même des caches, c'est possible? Je pense même à remplacer les disques magnétiques avec des registres bien qu'ils soient des souvenirs volatils naturels. Avons-nous des registres non volatile pour cette utilisation? Cela deviendrait si vite! Je me demande simplement si cela pourrait être arrivé ou non?


3 commentaires

De nombreux UC sont comme ça, pas de RAM, juste des registres.


Pouvez-vous donner un exemple?


Dans certaines limites, oui - ne vous attendez pas à une mémoire de registre de gigaoctet, cependant. De plus, Die Estate est très coûteux et une limitation dure, également la chaleur générée par le processeur deviendrait ingérable. Donc, en général, l'idée est irréalisable.


10 Réponses :


-1
votes

La raison pour laquelle vous obtenez si peu de mémoire enregistre est que c'est incroyablement coûteux. C'est pourquoi nous avons la hiérarchie de la mémoire.


1 commentaires

Il s'agit d'une question abstraite qui recherche une possibilité technique de ces ordinateurs, le coût n'a pas d'importance pour cette question.



0
votes

Vous n'avez pas besoin même de registres - il est possible de créer quelque chose comme une machine de Turing qui prend le flux de code d'entrée et de données et produit un flux de sortie. C'est quelque chose comme ce que les ordinateurs ont commencé avec.


1 commentaires

Je pense que nous avons besoin de souvenirs, Turing Machine a même besoin de mémoire pour garder l'état de la machine, même si je ne sais pas comment cette machine pourrait être mise en œuvre dans le monde réel!



0
votes

Il est possible, mais des ordinateurs tout à fait peu pratique - même peu de gamme ont aujourd'hui 2 gigaoctets de RAM. Comment géreriez-vous deux milliards de registres dans le code (et où allez-vous les faire, physiquement)?

Aussi, que feriez-vous avec cela que la vitesse de RAM (et même des caches de processeur) est une préoccupation? Soit exécuter le système de RAM (assez rapide) ou construire un processeur spécial.


1 commentaires

2 milliards de registres nécessitent un ou plusieurs champs de registre de 31 bits dans chaque instruction. Je propose que le champ Enregistrer soit un mot de 32 bits séparé en dehors de l'opcode de base. Je mettrais physiquement les registres sur une puce distincte ou des copeaux. De toute évidence, cela conduira à une pénalité de performance, alors j'aurais un petit ensemble de "ultra-registres" sur la puce CPU.



4
votes

Les registres sont rapides car la plupart des registres sont connectés directement à la plupart des unités fonctionnelles. Bien qu'un programme se charge un registre, un autre registre alimente l'ALU et un autre registre écrit un résultat résultant d'une autre unité fonctionnelle.

Les registres sont fabriqués avec des éléments logiques tels que des tongs, de sorte que la plupart des valeurs de la plupart des registres sont toutes disponibles en même temps, tout le temps. Ceci est différent d'une mémoire où seule une adresse sélectionnée est disponible à la fois et seul un nombre très limité de ports de lecture est disponible. Typiquement, c'est juste un circuit de lecture.

Cependant, ce type de mise en œuvre et d'interconnexion est ce qui utilise l'espace de matrice sur le microprocesseur. Lorsque cela est utilisé, vous commencez à ajouter de la mémoire pour un stockage supplémentaire.

Il y a eu des architectures avec des banques supplémentaires de registres. ( SPARC !)


2 commentaires

Un fichier de registre n'est pas fondamentalement différent de la matrice de données pour un cache L1D: les deux sont des souvenirs SRAM multi-portés. (Je ne parle pas de la cache entière avec des comparateurs et des trucs de balises, juste les données elles-mêmes qui sont traitées par ensemble et décalage). Mais le fichier de registre est plus petit et plus rapide, avec plus de ports de lecture et d'écriture. (Typiquement autant que le CPU ait déjà besoin, pour éviter la conflit.) Le cache L1D moderne est souvent multi-porté, comme lire + lire / écrire ou lire + lire + écrire. (Et peut-être un autre port afin de pouvoir communiquer avec L2 sans bloquer la CPU.)


Les registres sont également spéciaux en raison de la transmission de contournements pour obtenir des données à partir du résultat de Ajouter R0, R1, R1, R2 aux entrées de Ajouter R0, R0, R0 SANS RETOUR DU enregistrer le fichier et le lire. Les registres ne sont pas indirectement adressables (sur la plupart des ISAS) afin d'identifier la lecture après l'écriture, c'est une question de comparaison de numéros de registre.



2
votes

Le problème avec ce sont des registres sont présents à l'intérieur de la CPU. Depuis son cadeau dans la CPU, sa latence minimale. Aussi parce que sa taille moindre. Lorsque vous augmentez la taille, indiquez que vous envisagez de construire un gros processeur avec de nombreux transistors (tongs) qui détiennent les registres, puis la dissipation de la chaleur, la consommation d'énergie, le coût, etc., sera énorme. De plus, lorsque l'espace augmente, la latence augmente également. Donc, fondamentalement, il n'y a pas beaucoup de différence dans le cas. C'est pire en fait.


0 commentaires

1
votes

Pour chaque enregistrement de 32 bits, vous avez besoin d'au moins 9x32 portes de XOR. C'est beaucoup de portes.

Le plus gros problème vient lorsque vous souhaitez que les données du registre passent sur le bus. Lequel tiendra la basse? Vous voulez ajouter plus de basse?

permet de dire que nous avons 10 registre, faisons-nous un bus de 10 lignes? Ce qui signifie que nous avons 10 connecteurs de bus qui se connectent à la plupart du système? C'est beaucoup de câblage, maintenant vous voulez que le registre signifie quelque chose de quelque chose?

Permet de passer à quel point nous avons besoin de basse pour 1kb de données?

1024 bit = 1024 * 9 * 32 Gates et 1024 lignes de basse dans la CPU.

Nous savons que Intel travaille avec 30 nm pour une porte. c'est 30 millions de portes, que le problème de la porte est plus redandais, mais comment avez-vous l'intention de résoudre le problème de la basse?


1 commentaires

"Lequel tiendra la basse?" Paul McCartney?



14
votes

La réponse est très court oui, vous pourriez en théorie, mais il ne fonctionne pas vraiment dans la vie réelle . Laissez-moi vous expliquer ...

La raison pour laquelle la hiérarchie de mémoire existe parce que les magasins de mémoire petit et rapide sont très chers par un bit (registres), tandis que les magasins de mémoire grands et lents sont très pas cher par un peu (disques durs).

Une autre raison pour laquelle un très grand nombre de registres sont très peu pratique est parce que les instructions pour référencer l'emplacement de mémoire . Lorsque vous avez seulement une poignée de registres, vous pouvez enregistrer le registre (ou registres) et le numéro un opcode dans une poignée de bits, ce qui signifie que le nombre bas des registres pour faire des instructions courtes et rapides . Si vous allez avoir une collection de plusieurs gigaoctets de registres, vous devez être en mesure de les référencer dans les instructions, et seront instructions beaucoup plus (et donc plus lent). Gardez à l'esprit que si tout était un registre, certaines choses seraient beaucoup plus rapide, mais en ayant un plus petit nombre de registres, certaines choses (par exemple, la plupart de ce que vous faites avec un ordinateur) sont beaucoup plus rapides.

Avoir un grand nombre de registres serait également ajouter un grande quantité de complexité au matériel qui traite de la lecture et de l'écriture aux registres, qui tout faire plus lentement.

Bien sûr, alors que la plupart d'entre nous pensent en termes d'ordinateurs, il y a sûrement des dispositifs simples qui faire ne disposent pas de registres, mais ils ne pourra lui aussi avoir une quantité très limitée de la mémoire, et ne sont pas fait pour le calcul d'usage général.

Vous pouvez également être intéressé ma réponse à Assemblée: Pourquoi sommes-nous tracasse avec des registres


1 commentaires

Il existe sûrement des appareils simples qui n'ont que des registres - sûrement pas une machine de programme enregistrée VON NEUMANN, cependant? Où le programme serait-il stocké? Si elle est stockée dans des "registres" et le compteur de programme et adressent indirectement ces registres, ils ne sont pas des registres au sens traditionnel. (Ou leur mémoire est mappée, votre fichier de registre doublait également comme mémoire. Les microcontrôleurs AVR ont par exemple disposer de sram interne et font de la mémoire de mémoire les registres vers les 32 octets de ce type.) Une propriété standard de registres est que vous pouvez ' t Adressez-les indirectement.



1
votes

La plupart de ces réponses traitent de savoir si ce serait pratique. David Johnstone a également mentionné le fait qu'un nom d'enregistrement doit être mentionné dans chaque instruction qui la touche. Suite à cela, dans la plupart des instructions modernes, une instruction a toujours ses registres d'opérande codés. Par exemple. Il y a l'instruction MOV% EAX,% EBX CODE>, et il y a le MOV% EAX,% ECX code> instruction. Il peut arriver que leur représentation binaire semble ressembler à:

| mov | source reg | dest reg | 
|  2  |     3      |     3    |


0 commentaires

3
votes

Les GPU modernes ont environ 5 Mo de registres et de très petits caches (comparer aux processeurs). Donc, oui, il est possible d'avoir un processeur avec de nombreux registres.

Mais vous avez toujours besoin d'une hiérarchie de mémoire (registres -> ScratchPad / caches -> Mémoire de l'appareil -> Mémoire de la CPU). Notez également que les GPU sont également différents des bêtes différentes en ce sens qu'ils sont construits avec des objectifs de parallélisme massives du premier jour et des GPU ne sont pas des objectifs généraux, mais des coprocesseurs.

Chaque fil GPU mange certains registres - tout le programme GPU est enregistré attribué - entraînant des milliers de threads pouvant exécuter / faire une pause / reprise en parallèle. Les threads sont utilisés pour masquer la latence de la mémoire sur GPU alors que sur les CPU sont utilisés à cet effet. Pensez-y comme hyper-threading poussé à l'extrême.


0 commentaires

0
votes

Hot Off the Rouncer Hardware Plaque de théorie ->

Si vous parvenez à relier chaque permutation des bits d'adresse, aux mots individuels - vous pourriez avoir un système de registre RAM. Imaginez si vous utilisez NAND pour faire les groupes d'adresses. (En d'autres termes, liez l'opposé de l'adresse au flop), et vous n'avez pas fait l'adressage avec des fils seuls + le petit commutateur, ce qui pourrait être une bobine de type solénoïde qui ne sera pas la valeur. Ensuite, chaque registre est dans la même sortie - les goupilles de contenu. Et seule l'adresse qui était passée, permettra de passer au courant des broches de contenu de sortie.

Simples.


0 commentaires