Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
La flessibilità di configurazione è il punto di forza di questo 2-in-1, che ripropone in un form factor alternativo tutta la tipica qualità dei prodotti Lenovo della famiglia ThinkPad. Qualità costruttiva ai vertici, ottima dotazione hardware ma costo che si presenta molto elevato.
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2010, 20:54   #1
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
[Asm] Progettare una architettura di processore

Salve a tutti!

Apro questo thread per discutere su una nuova architettura di processore, costruita partendo da zero, definendo il set di istruzioni, i registri, le modalità ecc...
Quando avremo deciso queste cose (o anche durante), possiamo implementare l'architettura usando l'ottimo simulatore Hades, così da poter far girare qualche programma che scriveremo.
Io ho già in mente qualche idea, tipo un' architettura RISC con 16 registri, ma con alcune istruzioni comode e tipiche di un CISC in modo da migliorare la densità del codice. Sono però indeciso sul formato delle istruzioni, se comprimerlo a 16 bit o lasciarlo largo a 32 bit e metterci più funzionalità.

Fatemi sapere cosa ne pensate, chiunque più dire la sua, anche se non è un esperto; siamo qui anche per imparare
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2010, 22:00   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Io da tempo sto meditando sui dettagli di un'ISA CRISP a 64 bit fortemente ispirata ai Motorola 68000, ma di realizzarne il circuito non se ne parla proprio: sarebbe troppo complesso come progetto.

I RISC, poi, non riesco a farmeli digerire.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 00:14   #3
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Io mi iscrivo... non so quanto riuscirò a fare, più che altro vorrei imparare qualcosa
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 09:40   #4
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Io da tempo sto meditando sui dettagli di un'ISA CRISP a 64 bit fortemente ispirata ai Motorola 68000, ma di realizzarne il circuito non se ne parla proprio: sarebbe troppo complesso come progetto.

I RISC, poi, non riesco a farmeli digerire.
Bene, se hai voglia, sarei interessato a sentire quali specifiche hai pensato. Per il circuito, non bisogna farlo a livello di transistor, il simulatore ci mette a disposizione molti blocchi già pronti (come alu, registri, rom, ram...), quindi potrebbe essere un po' più semplice. Poi se è veramente così complesso, almeno avremo discusso su una possibile architettura, che è già interessante per se.

Quote:
Originariamente inviato da MaxArt Guarda i messaggi
Io mi iscrivo... non so quanto riuscirò a fare, più che altro vorrei imparare qualcosa
Ecco, questo è lo spirito
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 10:01   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Bene, se hai voglia, sarei interessato a sentire quali specifiche hai pensato. Per il circuito, non bisogna farlo a livello di transistor, il simulatore ci mette a disposizione molti blocchi già pronti (come alu, registri, rom, ram...), quindi potrebbe essere un po' più semplice. Poi se è veramente così complesso, almeno avremo discusso su una possibile architettura, che è già interessante per se.
OK, riorganizzo le mie idee e mi metto a descrivere l'architettura interna e la tabella degli opcode con le istruzioni mappate.

Mi ci vorranno un po' di giorni, comunque.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 10:09   #6
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
OK, riorganizzo le mie idee e mi metto a descrivere l'architettura interna e la tabella degli opcode con le istruzioni mappate.
In cosa consistono queste due operazioni?
So giusto cosa sono gli opcode.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 10:27   #7
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
OK, riorganizzo le mie idee e mi metto a descrivere l'architettura interna e la tabella degli opcode con le istruzioni mappate.

Mi ci vorranno un po' di giorni, comunque.
Prenditi pure tutto il tempo che vuoi, grazie della partecipazione

Quote:
Originariamente inviato da MaxArt Guarda i messaggi
In cosa consistono queste due operazioni?
So giusto cosa sono gli opcode.
Intende dire che deve definire quanti/quali registri, la loro larghezza, il datapath... , e poi descrivere le istruzioni, cioè il loro formato, i modi di indirizzamento ecc...
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 11:01   #8
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Avendo studiato un'unica architettura(MIPS), non penso di poter fare molto. Qualsiasi cosa io dica, penso sarebbe influenzata da quell'unico, solo punto di vista.

Ultima modifica di ndakota : 19-06-2010 alle 11:28.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 16:23   #9
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
E io che sono influenzato dal 68000, allora?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 16:26   #10
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Avendo studiato un'unica architettura(MIPS), non penso di poter fare molto. Qualsiasi cosa io dica, penso sarebbe influenzata da quell'unico, solo punto di vista.
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
E io che sono influenzato dal 68000, allora?
Appunto, siamo qui per imparare, nessuno può conoscere tutti i processori esistenti, ognuno argomenta su quello che sa, e coglie l'occasione per imparare quello che non sa
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 18:18   #11
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
un doppio array di registri a 32 bit, in modo da poter operare sui 64 non lo mettiamo in conto ?

secondo me tra 32 e 16, il 16 è più snello e leggero...ma se prendiamo in considerazione tutte e 3 le opzioni, un idea sulla struttura di un 64 io ce la butterei giù
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 18:21   #12
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da lupoxxx87 Guarda i messaggi
un doppio array di registri a 32 bit, in modo da poter operare sui 64 non lo mettiamo in conto ?

secondo me tra 32 e 16, il 16 è più snello e leggero...ma se prendiamo in considerazione tutte e 3 le opzioni, un idea sulla struttura di un 64 io ce la butterei giù
Certo, si può fare tranquillamente: un vantaggio di quel simulatore è che si possono modificare i parametri di registri/alu/memorie in modo da avere qualsiasi larghezza di parola. La dimensione non è una complicazione, se vuoi possiamo anche farlo a 128 bit
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 22:13   #13
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Da crasso ignorante della materia, io mi pongo alcune domande. A partire proprio dai registri.
A volerla fare semplice, i registri altro non sono che delle aree di memoria ad accesso *estremamente* veloce (direi immediata). Quindi, anziché andare a definire singolarmente i registri, la mia idea era quella di definire direttamente un'area di memoria ad accesso estremamente veloce, e di indirizzarla con una serie di codici specifici.

Poniamo, che so, di avere un'area di 128 byte come "memoria di registro". Possiamo usarla come suddivisa in 16 registri a 64 bit, oppure 32 registri a 32 bit, oppure come 64 registri a 16 bit, o come 128 registri a 8 bit. O anche 8 registri a 128 bit...
Con 8 bit possiamo completamente indicare ogni singola porzione di memoria di quest'area. Ad esempio, per indicare un registro a 8 bit, lo indichiamo mettendo a 1 il bit 0 ed usando gli altri 7 per indicare quale dei 128 registri a 8 bit usiamo.
Per i registri a 16 bit, poniamo i bit 0 a 0 ed il bit 1 ad 1, usando gli altri 6 bit per indicare quale dei registri a 16 bit stiamo usando. E così via...

Esempio:
0011010 1 indica il registro a 8 bit numero 26 (offset 25 dell'area dei registri)
011000 10 indica il registro a 16 bit numero 24 (offset 47)
0110 1000 indica il registro a 64 bit numero 6 (offset 47, come sopra)

Pare una minchiata? O troppo complesso?
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web

Ultima modifica di MaxArt : 19-06-2010 alle 22:16.
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 22:51   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Mi sembra estremamente complicato, difficilmente implementabile e poco scalabile.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 23:12   #15
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Puoi scendere più nel dettaglio? Altrimenti non capisco nulla...

La mia idea (che in realtà ho da quando ero un ragazzino che smanettava con l'assembly) è mutuata da quello che si fa con i registri AX, BX, CX e DX dell'x86, che vengono automaticamente suddivisi in due registri a 8 bit: AH, AL, poi BH e BL e così via.
Rendere più generale questo concetto è così complicato?
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 23:18   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Richiede un decodificatore per recuperare dimensione e posizione del registro da utilizzare, e già questo è un grosso impedimento (tutt'altra cosa è chiedere: "voglio AH", oppure "voglio RAX"; si tratta di scelte "immediate" perché già "decodificate").

Inoltre, fatto questo, serve logica addizionale per selezionare e mascherare opportunamente le parti interessate.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2010, 23:49   #17
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Richiede un decodificatore per recuperare dimensione e posizione del registro da utilizzare, e già questo è un grosso impedimento (tutt'altra cosa è chiedere: "voglio AH", oppure "voglio RAX"; si tratta di scelte "immediate" perché già "decodificate").
Ma a dire il vero anche queste sarebbero già "decodificate", solo che anziché una manciata di codifiche qui ce ne sono 256 (anzi, anche qualcuna di meno), ognuna già pronta con dimensione e posizione del registro.
Il mio discorso si riferiva al fatto che bastano 8 bit per indicare tutti i registri possibili.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2010, 00:18   #18
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
provo a spiegare la mia idea sui registri 32/64 bit.
adesso provo ad esporre un esempio supponendo i registri a 4bit, che possono essere sdoppiati ad 8bit, per ovvie semplicità di calcolo.

supponiamo di avere un array di 8 registri, e immaginiamolo con la seguente struttura, a "doppia colonna":
Codice:
riga0:     R0:  xxxx      R1:  xxxx
riga1:     R2:  xxxx      R3:  xxxx
riga2:     R4:  xxxx      R5:  xxxx
riga3:     R6:  xxxx      R7:  xxxx
• R0 lo riserviamo come consuetudine come accumulatore.
• R1 lo chiamiamo "registro di sdoppiamento", ed ogni bit del registro è un valore di verità riferito ad una delle righe della struttura a doppia colonna.
il bit più significativo se sarà 0 indicherà che la modalità "ad estensione di registri" è disattivata, 1 altrimenti;

se l'i-esimo bit è 1, i due registri della riga associata andranno letti in sequenza come un unico registro da 8 bit, se invece è 0 si potrà avere accesso ad entrambi i registri contententi valori a 4 bit.

con semplici (almeno in linea teorica) cambi di notazione si può risolvere il tutto con degli shift o degli or/xor sui bit dei registri.

se tutti i registri sono implementati come un unico array di bit, la lunghezza di due registri sequenziali o di uno solo ha complessità equivalente, e una richiesta su un determinato registro equivale solo ad operare su n bit (nell'esempio qui sopra 4) consecutivi a partire da un determinato bit, ben identificabile...



che dite ?!
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2010, 00:30   #19
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
Quote:
Originariamente inviato da lupoxxx87 Guarda i messaggi
• R0 lo riserviamo come consuetudine come accumulatore.
Ecco, questa è una cosa che non ho mai ben capito dei processori, almeno quelli moderni. Cioè, dover attribuire per forza un "compito" specifico ai registri.
Come i vecchi AX, BX, CX e DX che erano "Accumulatore", "Base", "Contatore" e "Dati", in un modo che aiutava anche a ricordare il compito con le iniziali. Poi c'erano SI e DI, e ancora SP, BP, IP ed infine DS, ES, SS e CS. Tutti con compiti specifici, tanto che alcune istruzioni funzionavano con alcuni registri e con altri no. Mica si può fare MOV [AX],DS ...

Ma in fondo sono tutti registri a 16 bit! Né più né meno. Capisco che, un tempo, per semplificare la complessità del processore, fosse necessario operare in questi termini, ma oggi penso che si siano abbondantemente superate queste barriere.
Io vorrei "liberalizzare" questa filosofia, con la mia idea esposta di sopra.

Quote:
se l'i-esimo bit è 1, i due registri della riga associata andranno letti in sequenza come un unico registro da 8 bit, se invece è 0 si potrà avere accesso ad entrambi i registri contententi valori a 4 bit.
E se il bit 0 di R1 è pari a 1 che succede?
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2010, 00:52   #20
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
Quote:
Originariamente inviato da MaxArt Guarda i messaggi
Ecco, questa è una cosa che non ho mai ben capito dei processori, almeno quelli moderni. Cioè, dover attribuire per forza un "compito" specifico ai registri.
....
Capisco che, un tempo, per semplificare la complessità del processore, fosse necessario operare in questi termini, ma oggi penso che si siano abbondantemente superate queste barriere.
Io vorrei "liberalizzare" questa filosofia, con la mia idea esposta di sopra.

E se il bit 0 di R1 è pari a 1 che succede?
se come bit 0 intendi il meno significativo, la risposta ce l'hai già. altrimenti...ce l'hai già lo stesso

• R1 lo chiamiamo "registro di sdoppiamento", .....
il bit più significativo se sarà 0 indicherà che la modalità "ad estensione di registri" è disattivata, 1 altrimenti;

il fatto di avere un registro fisso come accumulatore è più semplice, almeno a mio dire, da realizzare sul circuito del processore.

comunque, imho, è più divertente sperimentare nuove modifiche su tecnologie abbondantemente testate che ribaltare tutto senza avere nessuna base su cui appoggiarsi
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Meta avrebbe scaricato illegalmente migl...
QNAP annuncia la funzionalità di ...
Fino a 96 core per chip: la nuova CPU se...
Robot che crescono mangiando i loro simi...
Star Wars Outlaws 2 cancellato: per Ubis...
F1 senza freni: il film supera i 500 mil...
Una supersportiva elettrica da 429 CV a ...
Denodo DeepQuery: ricerche complesse in ...
Pluribus è la nuova ambiziosa ser...
IA come persone: avranno una personalit&...
Scoppia la bufera NSFW: la mano di Colle...
Philips porta OneBlade su Fortnite: arri...
Il consumo dei data center AI esplode: r...
Dimenticate tutto quello che avete visto...
Prodotti illegali su Temu: l'UE avvia pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v