Alt-F4 #24 - Výroba vzpomínek  19-02-2021

Napsal pocarski, upravil stringweasel, Nanogamer7, Conor_, Therenas, Firerazer,
přeložil oof2win2

Obsah

Tento týden, budeme pokračovat na pocarskiho kuse z minulého týdne, který byl celý o tom, jak postavit počítač v Factoriu s pomocí pouhých pásů. Tentokrát, budeme se snažit pořítač naučit jak si zapamatovávat věci. Uvidíme, jak to půjde.

Pásové vypočítávání, část druhá: Nikdy Nezapomeň pocarski

Tento týden, budu pokračovat s pokračováním svého článku o pásovém počítání. Silně doporučuji, aby jste se podívali na minulou edici pro osvěžení.

Malá poznámka před začátkem: tento týden Discord uživatel BlueCheetah#7844 udělal významná vylepšení layoutu na mém sčítacím obvodu, je to teď o trochu delší, ale čtyři bloky široké. Zde je obrázek toho, jak to dělá stejné výpočty jako minulý týden:

Pásový sčítač

S tím z cesty, vraťme se zpět k práci. Minule, zkoumali jsme sčítání číslic s pouhými pásy a rozdělovači, a tento týden se budeme dívat na něco stejně důležitého v ohledu počítačů: paměť. Schopnost sčítat čísla je hezká, ale ultimátně k ničemu když neexistuje způsob uložit instrukce nebo výsledek. V CPU, výsledky sčítání jsou zapamatovány a potom, po nějaké manipulaci, vráceny zpět do stejných sčítačů které je před okamžikem spočítaly. Toto dovoluje k skoro jakékoli představitelné matematické operaci.

Stejně jako minulý týden, všichni jsou vítáni k praktické zkušenosti s knihou plánů s všemy obvody z tohoto článku.

Multiplexor

K začátku, uvedu vás k novému obvodu: multiplexor. Multiplexor má dva datové zdroje, A a B, jeden pointerový vstup P a výstup O. Zde je pravdivostní tabulka pro tento multiplexor (“-“ znamená vstup nemá efekt na výstup):

A B P O
0 - 0 0
1 - 0 1
- 0 1 0
- 1 1 1

Vstup P efektivně vybírá který datový vstup má být dán do výstupu. Pokud je P 0, náš výstup se bude rovnat hodnotě A, a pokud je to 1, tak se náš výstup bude rovnat hodnotě B. Teď, abychom toto dokázali postavit, musíme využít AND hradla. Ty nám dovolí selektivně ignorovat vstup. Můžeme zvolit zda chceme projít zkrz vstup nebo ne tím, že zapneme nebo vypneme input druhého hradla. S ohledem na tuto informaci jsme schopni si znovu představit multiplexor jako (A A NE P) NEBO (B A P). S všemi těmito elementy jsme si již známi, což znamená, že multiplexor může být postaven takto:

Toto je lehce obvod duplikátor-NOT a dvě AND hradla. Také potřebujeme pár měničů itemů, aby jsme schodli vstupy a výstupy druhů itemů.

Základní paměťová buňka

Paměťové buňky zní velmi komplikovaně od začátku. Obvod, který si pamatuje vstup? Urřitě by něco takového potřebovalo někajý způsob uložiště, a jak vystupovat uložiště, aniž by došel zdroj? Toto je místo, kde náš nový kamarád multiplexor přijde do akce. Co se stane, když vytvoříme smyčku kolem dokola a dáme mu jeho vlastní vstup A? Odpověď je: magie se stane!

Jak můžete vidět, s touto jedinou změnou jsme změnili multiplexor na velmi lehký paměťový článek. Co byl vstup B ne teď jediný datový vstup do paměťového článku, a co byl kdysi vstup P je teď “psací” vstup. Obvod nemá výstup protože jsme ho dali do smučky, a to jsme opravili tím, že jsme tam dali duplikátor (a také kombinovali měnič s AND, jako minule):

Obvod, který jsme teď vytvořili má název D latch. Má dva vstupy: D pro “Data”, a E pro “Zapnout. Narozdíl od elektronických počítačů, potřebujeme nechat vstup *E zapnutý na nějakou dobu, protože itemy se potřebují dostat zpět na začátek aby výstup byl stabilní. Nicméně, D latch má docela zásadní vadu; když je vstup E zapnutý, výstup kompletně kopíruje vstup D, efektivně měnící tuto jednotku na kompexní kabel. Potřebujeme garanci stability, a proto potřebujeme něco jiného než D latch.

Otrokářská paměťová buňka

Hodně problémů může být vyřešeno tím že postavíte další kopii, a D latch není výjmkou. Duplikujeme a invertujeme vstup E, a dáme jeho inverzi do enable vstupu jiného D latch. Poté, necháme výstup druhého latche jít do datového vstupu druhého. Tato inverze zde je dělána představením item jiného typu, který je přepsán enable vstupem. Jako minulý týden, dvě strany pásu přijdou vhod, a nemusíme postavit celou novou kopii, můžeme použít chytré smyčkování:

Tento systém dvou latchů vyrábí takové schodiště pro náši datovou hodnotu, kde je povolena jít první krok pouze poté, co je znovu zapnuta. Toto ochraňuje výstup od změny dokud nedokončíme cyklus. Teď můžeme všechno přeskuput na kompaktní modul:

Zajímavě, má to stejné dimenze jako sčítací modul z minulého týdne (nebo mělo dokud nepřišel BlueCheetah). Mluvte o uspokojující náhodě!

Konečná poznámka

Teď když máme sčítač a paměť, jsme schopni vyrobit CPU. Ovšem potřebujeme hodiny aby se všechno řídilo, to je lehké jako snyčka polovičního sčítače s duplikátorem. Aritmetická logická jednotka (ALU) je pouze několik šítačů ve smyčkách zkrz registr, který samotný je pouze několik paměťových buněk. Moje znalosti počítačů nejsou dost rozsáhlé abych vše plně vysvětlil, tak prosím zvažte podívání se na letao12 na YouTubu, protože to byla jeho série, která mě inspirovala k tomu, abych tuto pásovou logiku vyzkoušel.

Přispívání

Jako vždy, hledáme lidi, kteří chtějí přispívat k Alt-F4, buď to je přidáváním zajímavěho článku nebo překladem. Pokud máte něco zajímavého na mysli co by jste chtěli sdílet s komunitou v hezkém způsobu, toto je ideální místo kde o tom diskutovat. Pokud si nejste moc jisti o tom, rádi pomůžeme s diskuzí nápadů o obsahu a strukturování otázek. Pokud to zní jako něco zajímavého, připojte se na Discord aby jste začali!