Qual è la differenza tra un hardware di serie e una macchina micro-codificata in "Una critica del Common Lisp"?

7

Stavo leggendo questo articolo: Una critica al Common Lisp e trovando difficile definire la definizione precisa di "stock-hardware machine" e la sua differenza con le macchine "micro-codificate". Ho cercato di cercare una definizione precisa del primo senza alcun risultato.

Quello che attualmente considero la macchina hardware di serie è che si riferisce al chip-set del computer comunemente disponibile sul mercato (senza molta personalizzazione).

Quindi, dato che vorrei chiedere, cosa si intende per una macchina hardware di serie (nel contesto della carta) e in che cosa differisce da una macchina con micro-codifica?

    
posta Bleeding Fingers 02.04.2013 - 21:15
fonte

3 risposte

11

L'hardware di serie significa sostanzialmente "non personalizzato", come hai ipotizzato. A quali personalizzazioni si riferisce dipende dal contesto. Nel contesto del documento, indica un computer che non è micro-codificabile . Il codice micro è per codice macchina come assembly è per un linguaggio di alto livello. Abbatte ogni istruzione in parti più piccole. Sulla maggior parte dei processori, il microcodice è completamente immodificabile, anche dai programmatori di assemblaggio, perché è cotto nella ROM al fab. Su alcuni supercomputer puoi cambiarlo. Gli autori sostengono che il comune LISP non è altrettanto efficace su computer in cui il codice micro non può essere personalizzato.

    
risposta data 02.04.2013 - 22:23
fonte
15

Nel contesto del documento che hai linkato, le parole "macchina con micro-codifica" farebbero quasi certamente riferimento a Lisp macchina .

All'epoca in cui Lisp stava iniziando a prendere piede, si sperava che sarebbe stato eseguito (nel caso generale) su macchine progettate specificamente per eseguire istruzioni Lisp, piuttosto che su computer con un set di istruzioni più generale destinato a essere utilizzato con compilatori e interpreti per qualsiasi lingua.

Il microcodice è ciò che accade sotto le effettive istruzioni del processore. Il processore che stai usando per leggerlo adesso ha istruzioni macchina che sono quasi certamente implementate in una sorta di microcodice. Ma a quel tempo, c'erano probabilmente macchine che

  1. Implementate le istruzioni della macchina nell'hardware; cioè, porte logiche e
  2. Macchine che implementavano set di istruzioni per processori avanzati (il Lisp era un esempio) nel microcode.

Il primo tipo sarebbe stato definito "hardware di serie". Il punto della carta, ovviamente, è che qualsiasi macchina progettata specificamente per eseguire direttamente le istruzioni Lisp sarebbe stata molto più efficace nell'esecuzione dei programmi Lisp rispetto a una macchina che richiedeva la traduzione delle istruzioni Lisp su qualche altro set di istruzioni.

All'epoca in cui il lavoro era scritto, questa distinzione sarebbe stata molto importante, perché c'erano inevitabili vincoli di memoria e processore che non esistono più oggi.

    
risposta data 02.04.2013 - 22:22
fonte
2

A metà anni '70 (quasi 40 anni fa) apparvero alcune macchine Lisp. Xerox (PARC) e MIT stavano sviluppando loro. Successivi Symbolics, LMI, TI e alcuni altri. Xerox utilizzava uno dei loro tipici processori bit-slice e MIT ha sviluppato un processore personalizzato ( CONS e poi CADR ). Il processore Xerox è stato utilizzato in un computer che poteva anche gestire la propria suite di software per ufficio e il software Smalltalk. Il processore Xerox utilizzava insiemi di istruzioni differenti per ciascuno. I set di istruzioni del processore sono stati programmati in microcodice. La macchina MIT Lisp aveva anche un processore, che poteva essere programmato in microcodice - ma era usato solo per il Lisp. A quel tempo i processori non erano CPU a microprocessore come oggi, ma una o più schede che creano una singola CPU. La maggior parte dei computer durante il 70s in grado di eseguire Lisp erano mainframe condivisi nel tempo o cosiddetti mini-computer (spesso macchine di DEC). Quindi non esistevano workstation o potenti personal computer. Le Lisp Machines sono state progettate per essere le prime workstation personali (utente singolo, nessuna condivisione del tempo, ampio spazio di indirizzamento, visualizzazione bitmap, grafica, mouse, rete, ...). Per eseguire Lisp in modo efficiente con la tecnologia del processore in quel momento, avevano bisogno di set di istruzioni personalizzate. Stiamo parlando di macchine precedenti con circa 1 MB di RAM, memoria virtuale su disco e meno di 1 MIPS (milioni di istruzioni al secondo).

Le macchine microcoder avevano set di istruzioni appositamente predisposti per supportare l'esecuzione di Lisp (architettura stack con istruzioni stack, aritmetica generica, chiamate a funzioni veloci, tipi di dati Lisp, supporto GC, ...). Nel caso della MIT Lisp Machine, l'hardware stesso aveva anche delle estensioni (come le larghezze di parole speciali della memoria).

I computer stock-hardware utilizzavano CPU come DEC VAX, Motorola 68k, Intel 86 e versioni successive SPARC, POWER, MIPS, ALPHA e molti altri. Questi computer utilizzavano le CPU come venivano dal produttore (DEC, Motorola, Intel, IBM, ...). Al di là delle semplici correzioni di bug (e gli sviluppatori di Lisp hanno trovato diversi bug nelle CPU) non c'era un adattamento speciale del set di istruzioni di questi computer mentre stavano eseguendo il Lisp. Alcuni di essi potrebbero anche essere in grado di avere un microcodice caricabile, ma non è stato usato per il Lisp.

Le CPU Lisp microcodificate permettevano insiemi di istruzioni molto semplici e quindi un compilatore Lisp relativamente semplice. Inoltre alcune varianti hanno permesso di compilare semplici funzioni Lisp in microcodice. Il MIT utilizzava una CPU personalizzata, perché desiderava un ampio spazio di indirizzamento per codice Lisp, compatto e un'esecuzione rapida per le prime workstation personali. Una combinazione che non era disponibile sul mercato in quel momento (anni '70 / primi anni '80). Si noti che queste CPU sono apparse prima del Common Lisp (che è stato pubblicato per la prima volta nel 1984). Nel tempo i produttori hanno spostato le CPU attraverso diverse tecnologie e diverse versioni di Lisp. Così hanno aggiunto il supporto per la programmazione orientata agli oggetti (Flavors, CLOS) e la programmazione logica ai set di istruzioni. Non è insolito che una nuova versione di Lisp abbia anche un microcodice migliorato con istruzioni nuove / migliorate. Successivamente TI e Symbolics hanno sviluppato microprocessori - CPU single-chip per Lisp. Almeno il chip Symbolics non è stato progettato per supportare il microcodice caricabile .

Sommario:

macchine con microcodice sono computer con CPU bit-slice o cpu Lisp speciale con set di istruzioni speciali per Lisp.

macchine hardware di serie sono computer con CPU commerciali tipiche, in quanto sono stati progettati dal produttore, senza un supporto Lisp speciale. Tra le ultime macchine hardware di serie, solo l'architettura SPARC contiene una minima quantità di supporto per Lisp (e Smalltalk).

    
risposta data 05.04.2013 - 13:13
fonte

Leggi altre domande sui tag