Als je de binnenlandse chipindustrie volgt, ben je vast behoorlijk in de war. Hoe moeilijk is het om technologie te ontwikkelen die de wetenschap en technologie van grote landen in de weg kan staan?
Eigenlijk zijn chips op zijn zachtst gezegd echt heel moeilijk. Neem bijvoorbeeld de 5 nm-lithografiemachine. Die bestaat uit meer dan 100.000 onderdelen. Als je ze één voor één zou tellen, zouden we het merendeel ervan op dit moment misschien niet eens kunnen produceren.
De chip zou echter eenvoudig zijn. In principe kun je er, zolang je over een bepaalde kennisbasis beschikt, wel achter komen. Op dit moment geldt inderdaad dat “technologie geen grenzen kent”. Tot nu toe zijn relevante boeken, artikelen en andere kennis in ieder geval vrij toegankelijk. Het belangrijkste verschil zit hem in industriële ervaring en technische expertise.
Vandaag ga ik eens bekijken hoe eenvoudig de chip eigenlijk is. Het doel van dit artikel is om wat wiskundige basiskennis toegankelijk te maken en vervolgens de eenvoudigste chip te ontwerpen!
Basisbegrippen over chips
Chips, de belangrijkste halfgeleiderproducten, vervullen specifieke functies. Zo vervult de CPU van een computer talrijke functies, zoals rekenen, weergeven, het lezen en schrijven van gegevens in het geheugen en op de harde schijf, en het verwerken van invoer via de muis en het toetsenbord.
Heb je je ooit afgevraagd wat de basis van een chip is?
Sommige mensen denken misschien meteen aan silicium. Als halfgeleidermateriaal vormt silicium de basis van chips. Maar ook een drinkglas bevat silicium, dat echter waardeloos is; silicium is dus niet de fundamentele basis. Waarom wordt er dan silicium gebruikt voor chips? Dat komt omdat geïntegreerde schakelingen op silicium worden vervaardigd! Het kenmerk van silicium is dat er een groot aantal schakelelementen op een klein oppervlak kan worden geïntegreerd.
Dus de basis van de chip is het circuit? Er zijn veel soorten circuits. De gloeilampen en schakelaars thuis vormen ook een circuit, maar dat heeft niets met de chip te maken. De chip maakt gebruik van logische schakelingen.
Probeer het nog eens: is de basis van de chip een logische schakeling? Nou, je zit er heel dichtbij, maar nog niet helemaal. Logische schakelingen voeren logische bewerkingen uit, en logische bewerkingen worden ook wel bewerkingen uit de Booleaanse algebra genoemd.
Wiskunde vormt dus de fundamentele basis van chips! Om precies te zijn: de Booleaanse algebra!
Deze conclusie is helemaal niet verrassend. Iedereen weet dat wiskunde de basis vormt van de natuurkunde. Zelfs de grote natuurkundige Newton behoort, samen met Archimedes en Gauss, tot de drie grootste wiskundigen ter wereld.
Booleaanse algebra
Als je de basisbeginselen van de Booleaanse algebra begrijpt, weet je hoe de machine werkt en begrijp je ook hoe je de chip moet ontwerpen.
Vervolgens zal ik de binaire en Booleaanse algebra toelichten en proberen de volgende stof op een voor kinderen begrijpelijke manier uit te leggen.
Waarom kunnen zelfs kinderen het begrijpen? Omdat de wiskundige Boole zelf nooit naar de universiteit is gegaan; hij was autodidact en opende op 19-jarige leeftijd een basisschool, die hij meer dan 10 jaar leidde. Hij beschouwt het leraarschap als zijn hoofdberoep en het is zijn wens om kinderen te helpen manieren te vinden om complexe wetten te begrijpen en onder de knie te krijgen.
De oorsprong van de Booleaanse algebra ligt in de wens om het logisch denken van mensen met behulp van wiskunde weer te geven.
Daaronder bevinden zich verschillende belangrijke Booleaanse bewerkingen die verband houden met computers:
1. EN-bewerking
Bijvoorbeeld: ik eet graag kebab
Laten we A staan voor barbecue en B voor schapenvleesspiesjes.
Dan wordt de bovenstaande uitdrukking:
Zowel A als B zijn waar, en het resultaat van de bewerking is waar. Bijvoorbeeld: voor gegrilde rundvleesspiesjes geldt A=1, B=0, A en B=0. Dus ik houd niet van yakitori.
2. OR-bewerking
Bijvoorbeeld: ik eet graag barbecue of hotpot.
Laten we A staan voor barbecue en B voor hotpot.
Dan wordt de bovenstaande uitdrukking:
Of het nu barbecue of hotpot is, ik eet het allebei wel, maar het is natuurlijk nog beter om beide te hebben!
3. Niet-werking
Bijvoorbeeld: ik houd niet van pittig eten.
Laten we A staan voor pittig.
Dan wordt de bovenstaande uitdrukking:
4. XOR-bewerking
Bijvoorbeeld: Ik ben dol op barbecue en ijs, maar als ik die samen eet, krijg ik diarree.
Laten we A staan voor barbecue en B voor ijs.
Dan wordt de bovenstaande uitdrukking:
Het is misschien een beetje lastig om deze bewerking te begrijpen. Wat houdt het in? Het betekent dat A en B niet hetzelfde kunnen zijn. Zonder barbecue en ijs lukt het ze zeker niet, maar samen kunnen ze het niet verdragen!
Naast de vier bovengenoemde Booleaanse bewerkingen zijn er ook de bewerkingen AND, NOT, NOR en XOR. Uit de XOR-bewerking blijkt dat alle bewerkingen kunnen worden gevormd door AND-, OR- en NOT-bewerkingen te combineren.
Binaire bewerkingen
Laten we het nu eens hebben over binaire rekenkunde.
In het binaire stelsel worden alle getallen weergegeven met 0 en 1. Elke bit kan alleen de waarde 0 of 1 aannemen, en wanneer de som 2 bereikt, moet er worden overgedragen.
Zo moet het getal 2 in het decimale stelsel worden overgedragen wanneer het in het binaire stelsel wordt weergegeven, en wordt het dan het tweecijferige getal 10, terwijl 3 in het decimale stelsel 11 is.
Het binaire stelsel werd meer dan 300 jaar geleden uitgevonden door de Duitse wiskundige Leibniz. In die tijd was er nog geen sprake van computers. Waarom heeft Leibniz een binair stelsel uitgevonden dat destijds volkomen nutteloos was? Eerlijk gezegd weet niemand dat.
Nu we het toch over ‘binair’ hebben, moet ik het even hebben over de roddels in ons land. Ik bedoel niet de roddels uit de entertainmentwereld waar overal over wordt gepraat, maar de echte roddels.
Bagua benadrukt dat twee rituelen vier beelden voortbrengen, en dat vier beelden Bagua voortbrengen:
Zie je, veel mensen denken dat roddelen de voorloper is van het binaire stelsel. Liangyi staat voor yin en yang, oftewel 0 en 1; Sixiang zijn binaire getallen van twee cijfers; Bagua zijn binaire getallen van drie cijfers; en de 64 hexagrammen van Fuxi zijn binaire getallen van zes cijfers:
Het lijkt erop dat de waarheid inderdaad zo is. Eerlijk gezegd weet ik niet welke roddels onze voorouders destijds op basis daarvan hebben verzonnen.
Er zijn echter brieven boven water gehaald tussen Leibniz en een missionaris die destijds in Peking woonde, waarmee men probeerde aan te tonen dat Leibniz’ uitvinding van het binaire stelsel was geïnspireerd door Chinese roddels, en veel mensen geloofden deze bewering.
Het verliep als volgt: Leibniz schreef destijds een brief aan de missionaris, in de hoop dat deze het binaire stelsel aan keizer Kangxi zou voorstellen. De missionaris zag in dat het hier slechts om Chinese roddels ging, en schreef Leibniz daarom terug. Een roddelzaak dus. Vervolgens schreef Leibniz een artikel waarin hij de praktische toepassing van het binaire stelsel in China besprak.
Of Leibniz zich door roddels heeft laten inspireren, is puur speculatie. En zelfs als dat zo zou zijn, wat dan nog? Toen Leibniz het binaire stelsel uitvond, vocht onze keizer Kangxi tegen Wu Sangui, en was onze moderne beschaving nog niet beschaafd.
Wat betreft de kwestie van Bagua en het binaire stelsel: laten we het gewoon als Bagua beschouwen en verdergaan met het bespreken van binaire berekeningen.
Stel dat er twee binaire getallen van één bit bij elkaar moeten worden opgeteld, dan zijn er vier mogelijkheden:
In de eerste drie gevallen is er geen overdracht nodig. In het laatste geval is S een binair getal van twee cijfers, dus is er wel een overdracht nodig. We stellen een aparte overdrachtsvlag C in.
Heb je gemerkt dat binaire optelling hetzelfde is als de hierboven geïntroduceerde Booleaanse bewerking:
De som van een optelling is de XOR-bewerking van twee optelgetallen
De draagvlag bij optellen is het resultaat van de AND-bewerking tussen twee optelgetallen.
We gebruiken Booleaanse operatoren om een logisch diagram op te stellen, zoals dit:
Het bovenstaande is een halve opteller, weergegeven met Booleaanse operatoren, die als volgt verder kan worden weergegeven:
Waarom wordt het een halve opteller genoemd? Dit komt doordat bij het berekenen van AB geen rekening wordt gehouden met een eventuele overdracht van het vorige bit; deze halve opteller kan dus alleen de optelling van het laatste bit van het binaire getal berekenen.
Als A en B geen getallen zijn in het laatste cijfer, moet je nagaan of er een overdracht is in het berekeningsresultaat van het vorige cijfer (Cin is de overdrachtsvlag van het vorige cijfer en Cout is de overdrachtssituatie van het vorige cijfer na de berekening van het huidige cijfer). Er zijn 8 mogelijke situaties:
Dit proces kan worden geïmplementeerd met twee halve optellers en een OR-bewerking:
Dit is de volledige opteller:
Zie je, we hebben de optelling van eencijferige binaire getallen geïmplementeerd met behulp van slechts vier operatoren uit de Booleaanse algebra.
In feite hebben we maar drie operatoren gebruikt, omdat de XOR-bewerking kan worden weergegeven als een combinatie van AND-, OR- en NOT-bewerkingen. Dat is natuurlijk te omslachtig.
Hetzelfde geldt voor de volledige opteller. Als we niet bang zijn voor wat gedoe, kunnen we zorgvuldig een combinatie van XOR-, AND- en OR-bewerkingen uitwerken.
Acht-bits binaire opteller
Zie je, computerwiskunde is ook niet moeilijk.
Het meest verbazingwekkende komt nu. We moeten de kennis van de Booleaanse algebra die we zojuist hebben opgedaan gebruiken om de eenvoudigste chip te ontwerpen.
Dit is een opteller waarmee acht-bits binaire getallen kunnen worden opgeteld.
Er zijn nog wel wat uitdagingen. Als deze opteller wordt gebouwd, kan hij als de eenvoudigste chip worden beschouwd. Het is echt een chip!
De invoer voor deze opteller bestaat uit twee binaire getallen van acht bits:
De ene wordt weergegeven door A, en de acht bits zijn A[0],…,A[7];
De andere wordt aangeduid met B, en de acht bits zijn B[0],…,B[7];
Er is ook een ingang, namelijk de overdrachtsvlag Cin. Als deze opteller afzonderlijk wordt gebruikt, wordt deze ingang altijd op 0 gezet.
De uitvoer is S, en de acht bits zijn S[0],…,S[7];
De vlag voor de overdracht naar de uitgang is Cout.
Laten we eens kijken hoe deze opteller eruitziet:
Dit is een 8-bits binaire opteller die bestaat uit 8 volledige optellers. Is dat niet magisch?
We hebben verder niets toegevoegd, alleen de volledige opteller die we zojuist hebben geleerd. Als je geïnteresseerd bent, kun je elke volledige opteller uitbreiden met twee halve optellers en een OR-operator.
Bovendien kun je elke halve opteller uitwerken met behulp van de XOR-operator en de AND-operator. Ik weet niet welke lezers hierin geïnteresseerd zijn. Hoe dan ook, ik ga er kapot van als ik het met de hand moet tekenen.
Dit alles wordt tijdens het ontwerpen van chips door EDA-software uitgevoerd.
Vervolg
Op dit moment hebben we op logische wijze een 8-bits binaire optelchip ontworpen met de eenvoudigste functie.
Waarom zeg je ‘logisch’? Omdat we tot nu toe nog geen kennis van schakelingen hebben gebruikt. Het gaat hier alleen om Booleaanse algebra, dus de chip is logisch gezien mogelijk, maar nog niet produceerbaar.
Hoe maak je dan een chip die ook echt werkt?
Allereerst hebben we elektronische componenten nodig die overeenkomen met de bovengenoemde Booleaanse operatoren om dezelfde functie te realiseren. Vervolgens sluiten we deze componenten aan volgens het ontwerp. Op deze manier ontstaat er een daadwerkelijke schakeling, die een poortschakeling wordt genoemd. De component die de bovengenoemde Booleaanse bewerking uitvoert, wordt een poortcomponent genoemd.
Uiteindelijk moeten we dit soort poortcomponenten op een siliciumwafer vervaardigen, zodat er op de siliciumwafer een poortschakeling, dat wil zeggen een geïntegreerde schakeling, tot stand komt.
Ten slotte wordt de geïntegreerde schakeling uitgesneden, worden de ingangs- en uitgangspinnen aangebracht en wordt de schakeling vervolgens verpakt, waarna een complete chip ontstaat!