De software in een computer is nutteloos zonder de hardware: de daadwerkelijke circuits in de computer. Net zoals er lagen van abstractie zijn voor software denken hardware-designers ook in lagen van abstractie.
Iedereen heeft het over computers die alle gegevens vertegenwoordigen met slechts twee waarden, 0 en 1. Maar dat is niet echt hoe elektronische circuits werken. Computerontwerpers kunnen doen alsof circuits uit (0) of aan (1) staan vanwege digitale abstractie , de belangrijkste abstractie in hardware. Boven dat abstractieniveau zijn er vier gedetailleerdere niveaus, het digitale domein genoemd. Onder de digitale abstractie werken ontwerpers in het analoge domein , waarin een draad in een circuit elke spanningswaarde kan hebben, niet slechts twee waarden.
Op de volgende vier pagina's, zullen we vier lagen van het digitale domein verkennen.
Zoals je zal zien in Les 3 zijn er al duizenden jaren machines die berekeningen uitvoeren. Maar de moderne, programmeerbare computer komt voort uit het werk van Charles Babbage in de vroege jaren van 1800.
Babbage was vooral een wiskundige maar hij heeft veel bijgedragen aan onder andere astronomie en economie. Babbage leefde ongeveer 150 jaar geleden van 1791-1871. Dat elektriciteit als een bron van energie kon worden gebruikt was nog onbekend. De stoommachine werd populair rond de tijd dat hij was geboren. De meeste precieze machines uit zijn tijd waren uurwerken.
Babbage's eerste computer was de Difference Engine (Verschilmotor).Hij gebruikten tandwielen om een ingewikkelde machine te ontwerpen die tabellen met getallen kon berekenen en printen (bijvoorbeld tabellen van logaritme-functies). Maar deze tandwielen moesten heel precies zijn en ieder tandwiel moest met de hand gemaakt worden. Het project werd zo duur dat de overheid de financiering stop moest zetten en Babbage maakte het project nooit af.
De Difference Engine in het London Science Museum Afbeelding van Wikimedia-gebruiker geni. Copyright 2008. Licentie: GFDL, CC BY-SA. |
Een close-up die de tandwielen duidelijker laat zien Afbeelding van Carsten Ullrich. Copyright 2005. Licentie: CC-BY-SA-2.5. |
Leer meer over de geschiedenis van de Difference Engine.
In de tijd van Babbage werden dergelijke numerieke tabellen met de hand berekend door menselijke wiskundigen, en ze werden met de hand gezet om te worden afgedrukt. Zowel de berekening als het kopiëren naar print waren foutgevoelig, en nauwkeurige tabellen waren nodig voor doeleinden variërend van engineering tot navigatie.
Babbage bouwde eerst een kleine Difference Engine in 1822. Deze eerste poging bewees dat een Difference Engine mogelijk was, maar het had niet de precisie (aantal cijfers in elk getal) om praktisch te zijn. In 1823 financierde de Britse overheid Babbage om een grotere versie te bouwen. Helaas konden metaalsmeden in zijn tijd niet erg precieze tandwielen in grote hoeveelheden produceren; elk moest handgemaakt zijn. Dus had hij hij tien keer zijn goedgekeurde budget besteed tegen de tijd dat de overheid het project in 1842 stopzette.
In 1991 voltooide het London Science Museum een Difference Engine volgens het oorspronkelijke ontwerp van Babbage met behulp van tandwielen gemaakt door moderne processen, maar op het niveau van precisie dat beschikbaar was voor Babbage. Dit bewees dat Babbage in principe een werkende machine had kunnen voltooien met voldoende tijd en geld.
De Difference Engine kan worden gebruikt om veel verschillende functies te berekenen door de
startpositie van verschillende versnellingen handmatig in te stellen. Maar het had
slechts één algoritme : het algoritme ingebouwd in het hardware-ontwerp. In 1833 begon
Babbage te werken aan de Analytical Engine, die gebaseerd was op het algemene idee van de Difference
Engine maar die wel instructies uit kon voeren in een primitieve programmeertaal die
met ponskaarten werkte.
Tegenwoordig zijn we omringd door programmeerbare computers en het is nu vanzelfsprekend om software te hebben. Maar dit was niet altijd zo, vóór Babbage werden alle algoritmen rechtstreeks in hardware geïmplementeerd.
Dus, 150 jaar geleden, maakte Babbage plannen voor wat in wezen een moderne computer is, hoewel hij geen elektronica beschikbaar had. Zijn onderliggende idee voor hardware was volledig mechanisch, maar het bleek niet mogelijk te zijn om het met de toenmalige technologie te bouwen. We hebben geen bruikbare computers gekregen totdat er een onderliggende technologie was die klein, goedkoop en snel genoeg was om de software-abstractie te ondersteunen. Je leert snel over deze technologie, transistors.
Leer meer over de Analytical Engine.
De Analytical Engine, had net als moderne computers, een rekenkundige processor (genaamd de "molen") en een apart geheugen (de "winkel") die 1000 getallen kon bijhouden, ieder tot en met 40 cijfers. De molen voerde rekenkundige handelingen uit in decimalen (met cijfers 0-9 verdeeld over ieder tandwiel); het gebruik van "enen en nullen" kwam pas later.
De programmeertaal die gebruikt werd in de Analytical Engine had ook voorwaardes en lussen, wat alles is dat je nodig hebt om een algoritme te maken. (Het kon lussen maken omdat het voorwaarts en achterwaarts door de ponskaarten kon gaan.)
Helaas kon Babbage maar een klein deel van de Analytical Engine bouwen, die nog meer metaalwerk nodig had dan de Difference Engine. Zijn aantekeningen over het ontwerp waren niet volledig en dus heeft niemand ooit een werkend model gebouwd, alhoewel er simulaties zijn op het internet (zie het Ga Een Stapje Verder-probleem hieronder). Jammer genoeg was Babbage werk niet bekend in de vroege dagen van elektronische computers en veel mensen hebben zijn ideeën heruitgevonden.
Leer over Ada, Gravin Lovelace's uitvinding van symbolisch programmeren.
Alhoewel zijn ontwerp zeer veelzijdig was, was Babbage vooral geïnteresseerd in het afdrukken van getallentabellen. Het was zijn medewerker Augusta Ada King-Noel, gravin van Lovelace, die voor het eerst inzag dat de nummers in de computer van Babbage niet alleen als hoeveelheden konden worden gebruikt, maar ook als weergave van muzieknoten, letters, enzovoort.
Veel van wat we vandaag weten over het ontwerp van Babbage komt uit de uitgebreide aantekeningen van Ada Lovelace over zijn ontwerp. Haar aantekeningen omvatten het eerste gepubliceerde programma voor de Analytical Engine, en daarom wordt ze algemeen beschouwd als "de eerste programmeur", hoewel het bijna zeker is dat Babbage zelf verschillende voorbeeldprogramma's heeft geschreven tijdens het ontwerpen van de machine.
Of ze nu echt de eerste programmeur was of niet, historici zijn het erover eens dat ze iets belangrijkers heeft gedaan: ze heeft het idee van symbolische berekening (inclusief tekst, afbeeldingen, muziek, etc.) naar numerieke berekening uitgevonden. Dit inzicht maakte de weg vrij voor alle manieren waarop computers tegenwoordig worden gebruikt, van Netflix tot stem-interactieve programma's zoals Siri en Alexa.
De Analytical Engine (boven beschreven) was de eerste programmeerbare computerarchitectuur. De processor in de computer die je nu gebruikt begrijpt maar één taal: zijn eigen machinetaal, geen Java, C of Snap!, of iets anders. Programma's die geschreven zijn in die andere talen moeten eerst vertaald worden naar machinetaal.
Het belangrijkste van de architectuur is de machinetaal. De set instructies van zeer laag niveau die de hardware begrijpt. Deze taal is een soort contract tussen de hardware en de software: De hardware belooft de instructies te begrijpen en de software compileert programma's van mens-vriendelijke taal naar deze instructies.
Machinetaal is de programmeertaal op het laagste niveau; het wordt direct begrepen door de hardware.
Architectuur is een abstractie, een specificate van de machinetaal. Het zegt ook hoe de processor verbonden is met het geheugen. Het specificeert niets van de circuits; dezelfde architectuur kan op meerdere manieren worden gebouwd qua circuits.
Een belangrijk onderdeel van een architectuur is het aantal draden dat de processor met het geheugen verbindt. Dit wordt de breedte van de architectuur genoemd, gemeten in bits (aantal draden). Een computer met een hogere breedte kan meer gegevens in één instructie verwerken.
Bekijk de Snap!-instructie
.
In een taal op laag niveau zoals C of Java zou het zelfde idee geschreven als:
c = a+b;Dat simpele commando zou vertaald kunnen worden in zes machinetaalinstructies (een beetje versimpeld):
movq _c, %rcx movq _b, %rdx movq _a, %rsi movl (%rsi), %edi addl (%rdx), %edi movl %edi, (%rcx)Deze notatie, assembly-taal genaamd, is een regel voor regel-equivalent aan de daadwerkelijke numerieke instructiecode, maar het is iets meer leesbaar. Wat betekent de code?
De eerste drie instructies laden de adressen van de drie variabelen in de registers in
de processor. De namen met een percentage-teken zoals %rcx
verwijzen naar
specifieke registers.
Movq
is de naam van een machinetaalinstructie.
(Het is een
afkorting voor "move quote", wat betekent dat we een constante waarde in een register plaatsen.
Merk op dat a een variabele is, maar het adres van a is een
constante waarde, omdat de variabele niet wordt verplaatst in het geheugen.)
De volgende instructie, movl
("move long"), zegt dat een woord van de ene plek naar
de andere moet worden verplaatst. Als een registernaam tussen haakjes staat zoals
(%rsi
dan betekent dat dat we locatie in het geheugen gebruiken van wie het adres
in dat register staat.
Omdat de derde movq
het adres van a in register
%rsi
heeft geplaatst zegt de eerste movl
dat de variabele a
van het geheugen in de processorregister moet worden geplaatst.
De instructie addl
zegt dat b moet worden toegevoegd aan hetzelfde
register. Aan het einde wordt de waarde in register %edi
in de geheugen locatie
geplaatst van variabele c.
Je wil niet moeten programmeren in deze taal! En dat hoeft ook niet ; moderne architecturen zijn ontworpen voor compilers, niet voor machinetaalprogrammeurs.
De meeste computerprocessors (het onderdeel dat instructies uitvoert) op desktop- of laptopcomputers gebruiken een architectuur genaamd "x86" die is ontworpen door Intel, een chipfabrikant. De eerste processor die die architectuur gebruikte, heette de 8086, uitgebracht in 1978. (De reden voor de naam x86 is dat de eerste paar verbeterde versies 80286, 80486, enz. Werden genoemd.) De originele 8086 was een 16-bitarchitectuur; sindsdien zijn 32-bit (sinds 1985) en 64-bit (sinds 2003) versies ontwikkeld. Zelfs met alle verfijningen van de architectuur zijn de nieuwe x86-processors bijna altijd backwards compatible wat betekent dat de versies van vandaag nog steeds programma's uitvoeren die zijn geschreven voor de originele 8086.
Waarom is de x86-architectuur de wereld gaan regeren? Het korte antwoord is dat IBM het in hun oorspronkelijke pc gebruikte en dat alle latere pc-fabrikanten hun voorbeeld volgden zodat software die op een IBM computer werkt, ook op hun computer werkt. Maar waarom koos IBM voor de x86? Er waren aantoonbaar beter concurrerende architecturen beschikbaar, zoals de Motorola 68000 en de eigen 801 van IBM. De pc-ontwerpers hadden ruzie over wat ze moesten gebruiken, maar uiteindelijk maakte het verschil de lange geschiedenis van samenwerking van IBM en Intel.
De Apple Macintosh gebruikte oorspronkelijk de Motorola 68000-architectuur en in 1994 ontwierp Apple zijn eigen PowerPC-architectuur in een gezamenlijk project met IBM en Motorola, maar in 2006 schakelden ze ook over op de x86, omdat Intel nieuwere, snellere versies van de x86 blijft produceren, vaker dan andere bedrijven kunnen bijhouden.
Alles van smartphone-architectuur wordt bepaald door de kleine ruimte in de behuizing. De hoogte en breedte van de telefoon worden beperkt door de grootte van de zakken in de kleding van mensen. (Houd je telefoon niet in je achterbroekzak. Dat is echt slecht, zowel voor de telefoon als voor je rug.) De dikte van een telefoon kan veel groter zijn dan nu vaak het geval is , maar om de een of andere reden concurreren telefoonfabrikanten op de dunheid van hun telefoons, waardoor ontwerpers nog minder ruimte hebben.
Als gevolg hiervan zijn veel componenten die gescheiden zouden zijn van de processorchip in een computer, onderdeel van de processorchip in een telefoon. Deze componenten kunnen bestaan uit een mobiele modem, een WiFi-modem, een grafische processor (een processor die is gespecialiseerd in parallel rekenen met lijsten van nummers), geheugen, een GPS-ontvanger om de fysieke locatie van je telefoon te vinden, circuits om de stroom en batterij te beheren en meer. Tegenwoordig bevat de chip waarschijnlijk twee, vier of zelfs acht kopieën van de werkelijke CPU om multicore-systemen te maken. Deze verzameling componenten wordt een systeem op een chip, of SoC genoemd.
Intel heeft een x86-gebaseerde (dat wil zeggen dezelfde architectuur die op pc's wordt gebruikt) low-power SoC gemaakt genaamd de Atom, die werd gebruikt in een paar Motorola-telefoons en andere telefoons die zijn gemaakt door bedrijven waar je nog nooit van hebt gehoord. Het is gemaakt om Android-, Linux- en Windows-telefoons te ondersteunen.
Maar de overgrote meerderheid van de telefoons gebruikt de ARM-architectuur, die (in tegenstelling tot de x86) vanaf het begin is ontworpen als een energiezuinige architectuur. Het acroniem staat voor Advanced RISC Machine. Het is beschikbaar in 32-bit- en 64-bitconfiguraties.
De naam staat voor Reduced Instruction Set Computer
(Verkleinde-Instructiesetcomputer), in tegenstelling tot de CISC-architectuur
(Complex Instruction Set Computer dus de Complexe-Instructiesetcomputer), inclusief
de x86. De instructieset van een architectuur is, zoals je uit de naam
kunt raden, de set instructies die de processor begrijpt. Een RISC heeft minder
instructies dan een CISC, maar is ook op andere manieren eenvoudiger. Een CISC heeft
bijvoorbeeld doorgaans meer adresseermodi in de instructies. In de
x86-architectuur kan de instructie add
twee processorregisters
toevoegen, of een register en een waarde uit het geheugen van de computer, of een
constante waarde die in de instructie zelf is ingebouwd. De instructie add
van een RISC-architectuur weet gewoon hoe hij twee registers moet toevoegen
(misschien moet het resultaat in een derde register geplaatst worden), en er zijn
afzonderlijke load
en store
instructies die waarden
uit het geheugen kopiëren in een register of andersom. Ook hebben in een
RISC-architectuur alle instructies dezelfde lengte (bijvoorbeeld 32 bits), terwijl
in een CISC-architectuur de instructielengtes kunnen variëren. Deze verschillen zijn
belangrijk omdat een RISC de volgende instructie kan laden voordat deze klaar is met
de vorige instructie en een RISC nooit meer dan één geheugengegevensreferentie per
instructie heeft.
Dus waarom gebruiken ze geen RISC architectuur in pc's? Ooit gebruikte Apple een RISC-processor genaamd de PowerPC in zijn Macintosh-computers, maar de overgrote meerderheid van de verkochte computers zijn pc's, geen Mac's, en als gevolg daarvan besteedt Intel enorme bedragen aan het bouwen van snellere en snellere circuits die de x86-architectuur implementeren. De moraal gaat over de interactie tussen verschillende abstractieniveaus: een betere architectuur kan worden overwonnen door een beter circuitontwerp of betere technologie om componenten in een geïntegreerd circuit te proppen.
Het bedrijf dat de ARM heeft ontworpen, genaamd ARM Holdings, bouwt eigenlijk geen processors. Ze verlenen een licentie voor het architectuurontwerp of circuitontwerp aan andere bedrijven die ARM-processors integreren in SoC's. Grote bedrijven die op ARM gebaseerde processorchips bouwen, zijn Apple, Broadcom, Qualcomm en Samsung. Fabrikanten van smartphones kopen chips van een van deze bedrijven.
Je kunt thermostaten kopen met computers erin, koelkasten met computers erin, pluizig dierenspeelgoed met computers erin - meer en meer dingen, naarmate de tijd verstrijkt. Moderne auto's bevatten meerdere computers, grotendeels om veiligheidsredenen; je zou niet willen dat de remmen falen omdat de dvd-speler een probleem heeft. Het doel, zoals beschreven door onderzoekers in de informatica, is "smart dust" (slim stof), wat betekent dat veel computers onopgemerkt door een gebouw kunnen zweven. Wat heb je aan een onopgemerkte computer? Dit is een klassieke technologie voor dubbel gebruik. Het nuttige gebruik waar iedereen het over heeft, is noodhulp bij rampen; het zou een grote hulp zijn voor de brandweer om van buitenaf te weten in welke ruimtes van een gebouw mensen aanwezig zijn. Maar een ander gebruik voor deze technologie zou spioneren zijn.
NXP Freescale SCM-i.MX6D chip
Voor ingebouwde computers zijn de belangrijkste ontwerpcriteria kleine afmetingen en een laag stroomverbruik. De chip in de bovenstaande afbeelding is gebaseerd op de ARM-architectuur, zoals de meeste mobiele telefoons. Dat is eigenlijk een grote chip voor ingebouwde systemen; de Kinetis KL02 MCU (microcontroller-eenheid) past in een vierkant van 2 millimeter. Dat is nog steeds te groot om als stof in de lucht te zweven, maar stel je het voor op de muur in een kleverige container.
Op een dag zal het spioneren nog effectiever zijn (samen met, hopelijk, behandeling voor hersenziekten): ARM richt zich op je brein met nieuwe implanteerbare chips (Engels) (Engadget, 5/17/2017).
Intel maakte in 2015 een x86-compatibele chip ter grootte van een knop, maar kondigde in 2017 aan dat dit zo zou zijn stopgezet, waardoor alleen ARM- en PowerPC-gebaseerde processors op de markt blijven concurreren.
In zekere zin kan elke architectuur een hobby-architectuur zijn. Zelfs in de tijd van computers van een miljoen dollar waren er softwarehobbyisten die manieren vonden om naar computerlokalen op de universiteit te gaan, vaak door zichzelf daar nuttig te maken. Tegenwoordig zijn er veel meer krachtige computers die goedkoop genoeg zijn dat hobbyisten ze uit elkaar willen halen. Maar er zijn enkele computerarchitecturen specifiek bedoeld voor hobbyisten.
Veruit de meest populaire computer specifiek voor hobbyisten is de Arduino. Het is een printplaat, niet alleen een processor. Rond de randen van het bord zitten connectoren. Aan de korte rand links in de afbeelding bevindt zich de stroomingang, die kan worden aangesloten op een voeding die is aangesloten op een stopcontact of op een batterij voor een mobiel apparaat zoals een robot, en een USB-aansluiting die voornamelijk wordt gebruikt om programma's te downloaden van een desktop of laptop computer. Aan de lange randen bevinden zich connectoren voor afzonderlijke draden die zijn aangesloten op externe sensoren (voor licht, warmte, bij een muur zijn, een ander object aanraken, enz.) Of actuatoren (stappenmotoren, lichten, zoemers, enz.).
Een belangrijk aspect van het Arduino-ontwerp is dat het vrij is ("vrij als in vrijheid"). Iedereen kan de Arduino maken en zelfs verkopen. Dit is goed omdat het de prijs laag houdt (het standaard Arduino Uno-bord kost $ 22) en stimuleert innovatie, maar het betekent ook dat er incompatibele Arduino-achtige boards kunnen zijn. (De naam "Arduino" is een handelsmerk dat alleen kan worden gebruikt met een licentie van Arduino AG.)
De processor in de meeste Arduino-modellen is een 8-bit RISC-systeem met geheugen in de chip, genaamd AVR, van een bedrijf genaamd Atmel. Het werd ontworpen door twee (toenmalige) studenten in Noorwegen, Alf-Egil Bogen en Vegard Wollan genaamd. Hoewel officieel "AVR" nergens voor staat, wordt algemeen aangenomen dat het afkomstig is van " Alf en Vegard hun RISC". Er zijn verschillende versies van de AVR-processor, met verschillende snelheden, geheugencapaciteiten en natuurlijk prijzen; er zijn verschillende Arduino-modellen die de verschillende processors gebruiken.
In tegenstelling tot de meeste ("von Neumann-architectuur") computers, scheidt de AVR ("Harvard-architectuur") programmageheugen van gegevensgeheugen. (Het heeft eigenlijk drie soorten geheugen, een voor het actieve programma, een voor gegevens op korte termijn en een voor gegevens op lange termijn.) De Analytical Engine van Babbage is ook ontworpen met een programmageheugen dat los staat van zijn data geheugen.
Er zijn eigenlijk twee verschillende ontwerpproblemen in deze architectuur. Een daarvan is helemaal in het analoge domein en heeft te maken met het soort fysieke circuits dat wordt gebruikt. Er zijn veel geheugentechnologieën, variërend in kosten, snelheid en vluchtigheid: vluchtig geheugen verliest de informatie die erin is opgeslagen wanneer het apparaat wordt uitgeschakeld, terwijl niet-vluchtig geheugen de informatie behoudt. Dit is hoe geheugen wordt gebruikt in de AVR-chips:
Daarom zijn er verschillende soorten fysiek geheugens in de AVR-chips, maar niets daarvan verklaart de Harvard-architectuur volledig, waarin geheugen is verdeeld in programma's en gegevens, ongeacht hoe lang de gegevens moeten bestaan. De belangrijkste reden om twee verschillende geheugeninterfacecircuits te hebben, is dat het de processor toestaat tegelijkertijd een programma-instructie en een gegevenswaarde te lezen. Dit kan de processor in principe twee keer zo snel maken, hoewel niet veel snelheidswinst wordt gevonden in de praktijk.
Om het voordeel van gelijktijdige instructie en het lezen van gegevens te begrijpen, moet je begrijpen dat processoren vaak zijn ontworpen met behulp van een idee genaamd pipelining. De standaard metafoor gaat over het doen van de was wanneer je meer dan één lading hebt. Je wast de eerste lading, terwijl je droger niets doet; dan was je de tweede lading tijdens het drogen van de eerste lading, enzovoort tot de laatste lading. Evenzo bevat de processor in een computer een circuit om een instructie te decoderen en een circuit om te rekenen. Als de processor één ding tegelijk doet, doet het instructie-decodeercircuit of het rekencircuit op elk moment niets. Maar als je de volgende instructie kunt lezen terwijl je de vorige uitvoert, blijft de hele processor bezig.
Dit was een lange verklaring, maar het is nog steeds enorm vereenvoudigd. Ten eerste is het mogelijk om pipelining ook in een von Neumann-architectuur te gebruiken. En daarbij, een pure Harvard-architectuur zou een computer niet toestaan om programma's te laden die de computer zelf uitvoert. In de praktijk worden dus verschillende compromissen gebruikt.
Atmel heeft sindsdien een reeks van ARM-compatibele 32-bits processors geïntroduceerd en Arduino heeft boards die die processor gebruiken, maar compatibel met de lay-out van de connectoren aan de randen.
Een ding heeft bijgedragen aan de populariteit van de Arduino bij hobbyisten is de beschikbaarheid van shields, . Dit zijn extra printplaten die op de zijrandconnectoren worden aangesloten en dezelfde connectoren aan hun bovenkant hebben. Shields voegen functies toe aan het systeem. Voorbeelden zijn motorbesturingsshields, Bluetooth-shields voor communicatie met mobiele telefoons, RFID-shields om die productlabels te lezen die je in de verpakking van veel producten vindt, enzovoort. Zowel het bedrijf Arduino als anderen verkopen shields.
Een geheel andere hobbyarchitectuur is de Raspberry Pi. Het is ontworpen om te worden gebruikt als een desktop- of laptopcomputer, maar met meer toegang tot de elektronica. Het maakt gebruik van een ARM-compatibele processor, zoals de meeste mobiele telefoons, maar in plaats van het uitvoeren van besturingssoftware voor telefoons zoals Android, draait het "echte" computerbesturingssystemen. Het wordt geleverd met Linux, maar mensen gebruiken het ook met Windows.
Het belangrijkste dat het speciaal maakt, is dat het goedkoop is: verschillende modellen variëren in prijs van $ 5 tot $ 35. Die prijs bevat alleen de printplaat, zoals op de afbeelding, zonder een toetsenbord, display, muis, voedingsadapter of een hoes. De grootste kostenpost in kitcomputers is het display, dus de Pi is ontworpen om op je tv aan te sluiten. Je kunt kits kopen met een minimale behuizing, een toetsenbord en andere belangrijke add-ons voor ongeveer $ 20. Je kunt ook luxe hoesjes kopen om het eruit te laten zien als elke andere computer, met een display, voor honderden dollars.
Omdat de Pi bedoeld is voor educatief gebruik, wordt deze geleverd met software, waarvan sommige gratis is, maar waarvan sommige over het algemeen geld kost voor niet-Pi-computers. Een belangrijk voorbeeld is Mathematica, dat meer dan $ 200 kost voor studenten (hun goedkoopste prijs), maar gratis is inbegrepen op de Pi.
Net als de Arduino ondersteunt de Pi add-on printplaten met dingen zoals sensoren en draadloze communicatiemodules.
Een gegeven van circuithardware is, hoe groter het geheugen, hoe langzamer het werkt. om deze reden hebben computers niet alleen een grote hoop geheugen. Er zal een klein aantal registers in de processor zelf zijn, meestal tussen de 8 en 16. De "grootte" (aantal bits) van een gegevensregister is gelijk aan de breedte van de architectuur.
Het hoofdgeheugen van de computer wordt tegenwoordig gemeten in GB (gigabytes of miljarden bytes). Een geheugen van die omvang kan niet snel genoeg zijn om een moderne processor bij te houden. Gelukkig hebben computerprogramma's over het algemeen plaats van referentie , wat betekent dat als het programma net gebruik heeft gemaakt van een bepaalde geheugenlocatie, het waarschijnlijk een nabijgelegen locatie hierna zal gebruiken. Dus een compleet programma kan heel groot zijn, maar in de loop van een seconde zal er maar een klein deel van nodig zijn. Daarom zijn moderne computers ontworpen met een of meer cache -geheugens - veel kleiner en daarom sneller - tussen de processor en het hoofdgeheugen. De processor zorgt ervoor dat het meest recent gebruikte geheugen naar de cache wordt gekopieerd.
Een recente 64-bit x86-processor heeft een eerste niveau (L1) cache van 64 KB (duizenden bytes) in de processorchip, een grotere maar langzamere L2-cache van 256 KB, ook in de processor, en een L3-cache van maximaal 2 MB (megabytes, miljoenen bytes) buiten de processor. Elk niveau van cache heeft een kopie van de meest recent gebruikte delen van het volgende niveau naar buiten: de L1-cache kopieert een deel van de L2-cache, die een deel van de L3-cache kopieert, die een deel van het hoofdgeheugen kopieert. Gegevens in de L1-cache zijn ongeveer even snel toegankelijk voor de processor als de interne registers en elk niveau naar buiten is iets langzamer. Hardware in de processor verwerkt al deze complexiteit, zodat programmeurs programma's kunnen schrijven alsof de processor rechtstreeks op het hoofdgeheugen is aangesloten.
Intel geeft licenties aan andere chipfabrikanten om processors te bouwen die dezelfde architectuur gebruiken als de processors van Intel. Waarom doen ze dat? Zouden ze niet meer geld verdienen als mensen alles bij Intel moesten kopen? De reden is dat computerfabrikanten, zoals Dell, Apple en Lenovo, hun systemen niet zullen bouwen rond een architectuur die slechts bij één bedrijf beschikbaar is. Ze zijn niet bang dat Intel failliet gaat; de zorg is dat er mogelijk een groter dan verwachte vraag is naar een bepaalde processor en dat Intel mogelijk niet in staat is bestellingen op tijd af te handelen. Maar als die processor ook verkrijgbaar is bij andere bedrijven zoals AMD en Cyrix, dan zal een vertraging bij Intel geen vertraging worden bij Dell. Die andere chipfabrikanten gebruiken mogelijk niet dezelfde circuits als de Intel-versie, zolang ze zich maar hetzelfde gedragen op architectuurniveau.