Domanda

Conosco x86 Assembly (e ho lavorato con FPGA ecc.), non ho mai scritto per un RISC, ho l'opportunità di seguire un corso in MIPS, ma sono occupato così com'è, quindi la mia domanda è So che ogni cosa che imparo è utile in qualche modo, ma davvero, quanto è benefico? (Sono un entusiasta di basso livello, ma è un must?)

(Sono a conoscenza di mips-is-it-important , ma mi sento che il mio caso è leggermente diverso poiché conosco già una sorta di Assemblea)

Grazie.

È stato utile?

Soluzione

Una cosa interessante di MIPS è che devi gestire manualmente Translation Lookaside Buffer (TLB). Non devi farlo con x86 (o con la maggior parte degli altri ISA che ho programmato). In questo modo è RISCier rispetto alle altre CPU RISC. Un sacco di apparecchiature di rete e di archiviazione ha cpus MIPS incorporato. Una start-up alla quale ho lavorato all'inizio di questo decennio ha realizzato una CPU MIPS a 16 core con acceleratori di crittografia (come due dei coprocessori). Tale design è stato acquistato da Juniper Networks e viene utilizzato nei loro servizi adattivi PIC nei loro router.

Quindi, come altri hanno già detto, MIPS è un ottimo esempio di ISA RISC e sta ancora ottenendo molte vittorie nel design. Penso che sia utile imparare.

Ho trovato la prima edizione del seguente libro un buon modo per impararlo:

http://www.amazon.com/Second-Morgan-Kaufmann-Computer- Architettura / dp / 0120884216 / ref = sr_1_1 ie = UTF8 & amp;? s = libri & amp; qid = 1.237.328,559 mila & amp; sr = 1-1

Altri suggerimenti

Non è certamente un must , ma è un bell'esempio di architettura RISC. Aggiungete a ciò l'architettura IBM 360 (onesta!) E avreste una conoscenza abbastanza buona della portata dei normali set di istruzioni.

Penso che imparare MIPS (almeno quello di base) non sia così difficile, c'è anche il simulatore SPIM che puoi usare per guardare l'esecuzione del codice. Se ti piace la programmazione di basso livello, vale la pena provare.

L'altra altra domanda aveva una buona giustificazione di un'architettura sempre più obsoleta: l'apprendimento dell'apprendimento è in stesso utile. Nel tuo caso ciò non si applica.

Considererei il corso solo se presupponesse già una conoscenza di un assemblatore (altrimenti passerai molto tempo a ripetere concetti di base). Altrimenti potresti preferire passare il tempo con qualcosa di più pertinente (e sarebbe improbabile che si tratti di un altro assemblatore, a meno che tu non abbia grandi aspettative di lavorare presto su un processore (famiglia) specifico.

Perché non imparare qualcosa di nuovo (ad es. programmazione funzionale).

Quando ero a scuola (BS CS Michigan Tech 2008), l'assemblaggio MIPS (in esecuzione su SPIM) è stato insegnato nell'introduzione "Intro to Computer Architecture" richiesta classe che copriva anche diversi tipi di architetture, cache, DMA e così via. Abbiamo anche imparato le basi di come le porte logiche e la memoria dinamica / statica sono costruite con componenti di livello inferiore come diodi, condensatori e transistor (non abbiamo approfondito molto; questa era una classe CS). Abbiamo usato un software di simulazione logica (fondamentalmente porte AND / OR / etc. Che puoi trascinare e rilasciare su una griglia e collegare insieme) per costruire un sommatore, un ALU e, infine, un processore RISC a 16 bit molto semplice, dato una specifica del codice macchina, assemblatore, programmi di esempio e output di esempio.

Se è quel tipo di classe, direi che sarebbe molto prezioso. Ho trovato le conoscenze di quella classe incredibilmente utili per comprendere cose nella mia classe di sistema operativo (memoria virtuale / paging / cache, interruzioni ...) e in seguito per capire come la JVM sta gestendo il bytecode. Comprendere come l'assemblaggio si associa alle mappe dei codici macchina per i multiplexer e gli ALU e i registri ha prodotto molte cose che pensavo fossero magiche prima di essere banali e di facile comprensione.

Altrimenti, questo è solo per aggiungere un'altra serie di istruzioni alla cintura degli strumenti, e MIPS potrebbe non essere quello con cui andare. è molto semplice / diretto / regolare rispetto a x86, quindi non dovresti avere molti problemi con la classe. Prezioso, però? Probabilmente potresti prenderlo abbastanza facilmente senza prendere una lezione se ti senti abbastanza a tuo agio con l'assemblaggio in generale e per qualche motivo ne hai bisogno.

Se il tuo appassionato di basso livello potrebbe valerne la pena, ma puoi insegnarti mips in un fine settimana, quindi immagino che il corso sarà più di una semplice programmazione in mips. Se si tratta di un corso di teoria dell'hardware del computer che utilizza mips, penso che valga la pena dedicare il tuo tempo.

Tuttavia, se si tratta solo di programmazione MIPS e hai già un handle sull'assemblaggio x86 e sui concetti di programmazione di basso livello, direi di passare la classe. Risparmia tempo e denaro e trascorri un fine settimana a scherzare con MIPS usando SPIM , che ha sottolineato Schnaader.

Ricorda anche che non hai esplorato abbastanza queste cose se non hai mai scritto una funzione ricorsiva in assembly.

Una delle mie lezioni ci ha costretto a imparare il linguaggio assembly MIPS. Beh, tecnicamente ... era la nostra architettura personalizzata, ma fortemente basata su MIPS. Conclusione, fallo. Conoscere l'assemblaggio mi ha aiutato indefinitamente, anche se odio lavorare così in basso sul metallo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top