Architettura (computer): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
AlnoktaBOT (discussione | contributi)
m robot Aggiungo: ko:컴퓨터 아키텍처
Nessun oggetto della modifica
 
(210 versioni intermedie di 99 utenti non mostrate)
Riga 1:
{{SU|Architettura dei calcolatori|informatica|febbraio 2024}}
[[File:Motherboard diagram.svg|thumb|Schema di un [[IBM compatibile]], con [[Chipset]] ([[northbridge]] + [[Southbridge (elettronica)|southbridge]]), [[CPU]] e [[Read Only Memory|flashROM]]]]
 
PerCon '''architettura informaticahardware''' si intende l'insieme dei criteri di [[progetto]] in base ai quali è [[progettazione|progettato]] e realizzato un sistema telematico[[computer]], oppure un dispositivo facente parte di esso. Per estensione, descrivere l'architettura di un dispositivo significa, in particolare, elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali.
 
== Architettura HardwareDefinizione ==
[[Gene Amdahl]], [[Gerrit A. Blaauw]] e [[Frederick P. Brooks]] introdussero il termine "architettura" nel 1964<ref>Gene M. Amdahl, Gerrit A. Blaauw, Fred P. Brooks: ''Architecture of the IBM System /360''. In: IBM Journal of Research and Development, vol. 8, n. 2, aprile 1964.</ref><ref>Tuttavia, Richard Case, una delle figure di spicco nello sviluppo dell'architettura [[IBM 360/370]], spiegò in un'intervista del 1987 che il termine “architettura” era già stato usato in precedenza, durante lo sviluppo della [[serie IBM 8000]], un progetto non realizzato. (Si veda: {{cita web|lingua=en|autore=David Gifford, Alfred Spector|url=https://www.cs.tufts.edu/~nr/cs257/archive/alfred-spector/spector87ibm.pdf|titolo=Case Study: IBM’S SYSTEM/360-370 ARCHITECTURE|sito=[[Communications of the ACM]]|data=1987-04|formato=PDF|p=293}}</ref> per distinguere le caratteristiche comuni di tutti i modelli IBM System/360 dalle loro versioni molto diverse in termini di tecnologia, capacità e velocità operativa. Questa comunanza aveva lo scopo di rendere più facile la sostituzione di parti e programmi del computer quando le esigenze dei clienti cambiavano.
[[Immagine:PC-Architecture.png|thumb|Schema di un IBM compatibile]]
Per '''architettura hardware''' si intende l'insieme dei criteri di progetto in base ai quali è progettato e realizzato un [[computer]], oppure un dispositivo facente parte di esso. Per estensione, descrivere l'architettura di un dispositivo significa, in particolare, elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali.
 
Si trattava quindi di un'[[astrazione (filosofia)|astrazione]] simile al concetto matematico di [[struttura algebrica]]. In essa, ad esempio, l'aritmetica è astratta dalle regole di sequenza e di scambio degli operandi o di risoluzione delle parentesi, in modo da applicarsi a vari [[insieme|insiemi]] e combinazioni di base, come i [[numeri naturali]] con l'[[addizione]] o gli insiemi con l'[[Unione (insiemistica)|unione]].
Il termine è spesso usato in riferimento alla configurazione dei [[Processore|processori]] e, quando si parla di prodotti di consumo, si usa in contrapposizione alla parola [[software]]: le soluzioni hardware risolvono le loro funzionalità sottoforma di dispositivo dedicato, quelle software sono soluzioni sviluppate sottoforma di programmi eseguibili che possono essere caricati su dispositivi [[general purpose]].
 
Gli autori hanno evitato la parola astrazione tentando una definizione per enumerazione in una nota a piè di pagina: “Il termine architettura viene qui utilizzato per descrivere gli attributi di un sistema visti dal programmatore, cioè la struttura concettuale e il comportamento funzionale, distinti dall'organizzazione del flusso di dati e dei controlli, dalla progettazione logica e dall'implementazione fisica”.
== Architettura Software ==
Per '''architettura software''' si intende l'insieme dei criteri di implementazione in base ai quali è progettata e realizzata una struttura software integrata, le caratteristiche di base che ogni calcolatore collegato deve rispettare e le configurazioni necessarie alla corretta interoperabilità. Al pari delle architetture hardware, descrivere l'architettura informatica di una realtà significa elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali.
 
Autori successivi come [[Peter Stahlknecht]] e [[Ulrich Hasenkamp]]<ref>Peter Stahlknecht, Ulrich Hasenkamp: ''Einführung in die Wirtschaftsinformatik''. 11. Auflage, Springer, Berlin 2005, ISBN 3-540-01183-8.</ref> hanno specificato, integrato e modificato questo elenco, perdendo di vista l'aspetto dei punti in comune e dell'astrazione. Di conseguenza, l'espressione "architettura dei computer" perse il suo carattere essenziale e divenne una parola d'ordine sofisticata per progetti arbitrari.
Il termine è spesso usato in riferimento al regolamento informatico e riporta la configurazione del [[Sistema Operativo]] e delle applicazioni e le informazioni amministrative. Nelle grandi realtà l'architettura software è parte dell'[[architettura telematica]].
 
== Descrizione ==
I soggetti che si occupano di [[architettura dei calcolatori]] hanno il compito di costruire sistemi di elaborazione di diversa complessità (da una semplice [[scheda elettronica]] a un complesso sistema con grossa potenza di calcolo) mettendo insieme questi componenti elementari.
 
È anche importante sottolineare la differenza che intercorre tra [[elettronica]] e architettura dei calcolatori:
l'elettronico ha il compito di costruire [[circuito elettronico|circuiti]] veloci ed efficienti, si occupa quindi di migliorare i "mattoni", i componenti elementari del sistema; l'architetto dei calcolatori ha invece il compito di ottenere le migliori prestazioni possibili (in termini di potenza di calcolo, costi in termini economici) assemblando in maniera efficiente i componenti elementari.
 
=== Elementi base ===
[[File:TexasInstruments_7400_chip,_view_and_element_placement.jpg|thumb|[[circuito integrato|Chip]] con porte logiche]]
 
I "mattoni" che costituiscono un sistema di calcolo sono:
* [[Porta logica|porte logiche]] ([[Algebra di Boole#AND|and]], [[Algebra di Boole#NOT|not]], [[Algebra di Boole#OR|or]])
* generatori di [[segnale digitale|segnali]] (ad es. [[clock]])
 
Mettendo insieme le porte logiche, che sono tipicamente circuiti realizzati con diverse tecnologie elettroniche ([[CMOS]], [[Transistor-transistor logic|TTL]], [[Emitter-coupled logic|ECL]]) è possibile costruire le cosiddette macchine elementari che si dividono in [[circuito combinatorio|macchine combinatorie]] e [[circuito sequenziale|macchine sequenziali]].
 
== Tipologia ==
=== Macchine combinatorie ===
{{vedi anche|Circuito combinatorio}}
[[File:Operating_system_placement-it.svg|thumb|Astrazione dall'hardware al software]]
 
I circuiti (o macchine) combinatori possono essere modellati matematicamente con [[funzione booleana|funzioni booleane]] di variabili booleane del tipo
<math>y=f(u)</math>
dove <math>y</math> è il vettore delle uscite del sistema e <math>u</math> è il vettore degli ingressi; come si nota dall'argomento della funzione <math>f</math>, i circuiti combinatori non sono dotati di stato, sono sistemi adinamici e quindi l'uscita del sistema in un istante <math>t</math> dipende solo dall'ingresso applicato al sistema nello stesso istante e non dagli ingressi precedentemente applicati (supponendo per semplicità che non ci siano ritardi di propagazione tra ingresso e uscita).
 
Le macchine combinatorie elementari sono le seguenti:
* [[multiplexer]]
* [[Multiplexer#Demultiplexer|demultiplexer]]
* decodificatori
* sommatori, divisori, moltiplicatori
 
=== Macchine sequenziali ===
{{vedi anche|Circuito sequenziale}}
 
Le macchine sequenziali invece sono sistemi del tipo dove è il vettore delle uscite, è il vettore degli ingressi e è il vettore degli stati. Quindi una macchina sequenziale è un [[sistema dinamico]], la cui uscita in un generico istante dipende sia dall'ingresso sia dallo stato del sistema in quell'istante.
 
Le macchine sequenziali fondamentali sono:
* [[flip-flop]]
* [[Memoria (informatica)|memorie]]
* [[Registro a scorrimento|registri a scorrimento]]
* [[Contatore|contatori]]
 
=== Processori e sistemi ===
Interconnessioni di [[reti logiche]] sotto forma di [[circuito integrato|circuiti integrati]] danno vita a sistemi elettronici di elaborazione più complessi (es. [[programmable logic device]] e [[microcontrollore|microcontrollori]]) fino ad arrivare ai [[processore|processori]]. Il termine architettura viene dunque usato in riferimento alla configurazione di quest'ultimi ([[architettura x86]], [[CISC]], [[RISC]], [[SPARC]], [[32-bit]], [[64-bit]], [[pipeline dati|pipeline]], ecc...) e, quando si parla di prodotti di consumo, si usa in contrapposizione alla parola [[software]]: le soluzioni hardware risolvono le loro funzionalità sotto forma di dispositivo dedicato, quelle software sono soluzioni sviluppate sotto forma di programmi eseguibili che possono essere caricati su dispositivi [[general purpose]].
 
A livello più esteso il termine architettura si riferisce all'architettura logica del computer nel suo intero comprendendo processore, memoria, [[registro (informatica)|registri]] e collegamenti tra loro, [[scheda madre]], [[scheda di espansione|schede di espansione]], ''[[case (hardware)|case]]'' o ''cabinet'' ecc...([[architettura di von Neumann]], [[architettura Harvard]], [[architettura di un processore basato su registri generali]] ecc..). Nell'ambito dei [[sistema informatico|sistemi informatici]] diffuse sono invece le architetture hardware [[Architettura multi-tier|n-tier]], mentre nelle grandi realtà si parla di [[architettura telematica]].
 
== Architettura software ==
[[File:Free and open-source-software display servers and UI toolkits.svg|thumb|I componenti di desktop libre]]
 
L{{'}}''architettura software'' è l'organizzazione fondamentale di un sistema, definita dai suoi componenti, dalle relazioni reciproche tra i componenti e con l'ambiente, e i principi che ne governano la progettazione e l'evoluzione. Questa definizione deriva dallo standard [[IEEE]] 1471-2000. Al pari delle architetture hardware, descrivere l'architettura software di un sistema significa elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali. Più precisamente, l'architettura software include l'insieme delle decisioni significative sull'organizzazione di un sistema software. L'implementazione di architetture software complesse spesso dà vita a [[piattaforma (informatica)|piattaforme]] software.
 
Nelle grandi realtà l'architettura software è parte dell'architettura telematica. Nell'ambito delle [[rete informatica|reti informatiche]] un esempio di architetture software sono le [[architettura di rete|architetture di rete]] a strati, mentre nelle [[applicazione web|applicazioni web]] sono diffuse le [[architettura multi-tier|architetture software multi-tier]].
 
== Applicazione ==
Come l'architetto di un edificio definisce i principi e gli obiettivi di un progetto di costruzione come base per i piani del progettista, così anche l'architetto informatico definisce l'architettura del computer come base per le specifiche di progettazione.
 
Il termine viene utilizzato per diversi significati:
* L'[[architettura del set di istruzioni]]: la progettazione dell'architettura del [[processore]] di un computer e del suo set di istruzioni e tecniche come il [[calcolo parallelo|parallelismo]] [[SIMD]] e [[MIMD]];
* architettura [[hardware]] più generale e completa, come il [[Computer cluster|cluster computing]] e le architetture [[Non-Uniform Memory Access|NUMA]];
* un'accezione meno formale si riferisce alla descrizione dei requisiti (soprattutto di velocità e connettività) o delle implementazioni progettuali dei vari componenti di un computer (come la memoria, la [[scheda madre]], le [[periferica|periferiche elettroniche]] o, più in generale, il processore principale).
 
== Note ==
<references/>
 
== Voci correlate ==
* [[MicroArchitettura architetturadei calcolatori]]
* [[Architettura telematicadelle reti di elaboratori]]
* [[Categoria:Architettura dei calcolatoriHarvard]]
* [[Architettura master-slave]]
* [[Architettura di von Neumann]]
* [[Architettura di un processore basato su registri generali]]
* [[Requisiti Architetturalmente Significativi]]
* [[Computer]]
* [[Evoluzione dell'architettura dei computer]]
* [[Microarchitettura]]
* [[Sistema informatico]]
 
== Altri progetti ==
{{Portale|Informatica}}
{{Interprogetto|wikt=architettura|preposizione=sull'}}
 
== Collegamenti esterni ==
[[ar:معمارية الحاسوب]]
* {{Collegamenti esterni}}
[[bg:Компютърна архитектура]]
* {{FOLDOC|architecture|architecture}}
[[bn:কম্পিউটার স্থাপত্য]]
* {{Garzanti}}
[[bs:Računarska arhitektura]]
 
[[de:Rechnerarchitektur]]
{{Controllo di autorità}}
[[en:Computer architecture]]
{{Portale|informatica}}
[[es:Arquitectura de computadores]]
 
[[fr:Architecture informatique]]
[[Categoria:Architettura dei calcolatori]]
[[hr:Arhitektura računala]]
[[hu:Számítógép-architektúra]]
[[id:Arsitektur komputer]]
[[ja:コンピュータ・アーキテクチャ]]
[[ko:컴퓨터 아키텍처]]
[[lv:Datora arhitektūra]]
[[nl:Computerarchitectuur]]
[[pl:Architektura komputera]]
[[pt:Arquitectura de computadores]]
[[ru:Архитектура компьютера]]
[[sk:Architektúra počítača]]
[[ta:கணினி கட்டுமானம்]]
[[th:สถาปัตยกรรมคอมพิวเตอร์]]
[[uk:Архітектура ЕОМ]]
[[vi:Kiến trúc máy tính]]
[[zh:计算机系统结构]]