Wikipédia:Tudakozó/Archívum/2022-05-10

A Wikipédiából, a szabad enciklopédiából
Ugrás a navigációhoz Ugrás a kereséshez

Létezik-e integrált áramkörös Turing-gép[szerkesztés]

Emblem-question-yellow.svg Ez a kérdés még nyitott. Ha tudod a választ és a forrást is meg tudod adni, akkor kattints a szakaszcím mellett a [szerkesztés] feliratra.
Ha új kérdést akarsz feltenni, kattints ide!

Azt szeretném megtudni, hogy létezik-e integrált áramkörös Turing-gép? Lego, stb. van, meg emulátor sokféle programnyelven, de IC? DDR4 memóriánál memóriacsatornánként elég 128 B cache, és egy byte-szervezésű gépnél az állapotátmenet-táblázathoz elég 1 KB SRAM/állapot, vagyis 1 chipen rengeteg Turing-gép megvalósítható, akár a RAM is lehet ugyanazon a chipen. A beprogramozásához 1 ARM mag is megteszi (programbetöltés, indítás, leállítás, megszakítást kap ha kész: végállapotba ért). 3 elérhető regiszter kell csak: hol tart, állapot, melyik állapotsorszámtól kezdve végállapot: ha állapot < ez akkor megy tovább, egyébként megszakítást kap az ARM mag, megkapja a Turing-gép sorszámát is ha több van. Ha 32 bit van bejegyzésenként, akkor SECDED ECC módon (1 bit hiba javítása, 2 bit hiba felismerése) 6 bit ECC: 26 bit marad: 8 az új karakter amit kiír, 1 hogy merre megy, 17 bit marad állapotnak: 131 072 állapot: 128 MB. Ha egy Zen 2-es chipet nézünk, annak a fele cache, fele CPU: 32 MB, tehát 64 MB cache férne el rajta. Mivel cache-nél tárolni kell a címet is, meg összehasonlítómű is kell mindhez, így 128 MB SRAM férne el rajta. Ennek fele lehetne normál DRAM mint a DDR4-nél: néhány GB fér el így rajta, a másik felén 64 MB: például 256 darab 256 állapotú Turing-gép, ha több állapot kell, több összekapcsolásával.
--91.120.147.55 (vita) 2022. május 10., 19:05 (CEST)[válasz]
Megjegyzés

Szeretném tudatosítani, hogy 1936-ban, amikor Turing ezt a cikket megírta, nem létezett még olyan számítástechnikai eszköz, amelyre a fentieket értelmezni lehetne. Digitális számítások céljára gyakorlatilag a forgó fogaskerekes, kézzel hajtható gépek léteztek. Ezekre az eszközökre kellett megalkotni olyan algoritmusokat, amelyek a várt eredményt véges számú lépés megtétele után képesek szolgáltatni. A legegyszerűbb ezek közül a gyökvonás. Ehhez tárolni és kezelni kellett a számadatokat, és döntést hozni arról, hogy befejezhető-e a művelet.

Nem létezett tehát mágnesszalagos tároló, tárolt programú gép, és nem is foglalkoztak a kettes számrendszer alkmlmazásával sem. Az előbbiekben említett fogalmak csupán később keletkeztek. MZ/X vita 2022. május 10., 21:13 (CEST)[válasz]

Természetesen én magam is tudom hogy semmi értelme se lenne. De ha megépítették Lego-ból, akkor csinálhattak ilyen integrált áramkört is. Nyilván a legegyszerűbb írni egy emulátort, és máris megvan az IC-s Turing gép: a program elfér a cache-ben, általában az input/output is:
// A pos a mutató kezdeti helye
// A program egy int [][256] tömb: [állapot][karakter] a címzése, a 0-7 bitek a kiírandó karakter, a 8-30. bitek az új állapot, a 31. bit hogy visszafele lép-e
// A state a kezdőállapot: a 8-30. bitekben tároljuk az állapot sorszámát, a többi 0 kell legyen!
// állapot előbbi módon tárolva < nonHaltStates esetén megy tovább, egyébként leáll, return az állapot ezen a módon tárolva
// haltPointer a mutató végállapota

int TuringMachine(char *pos, const int *program, int state, const int nonHaltStates, char *&haltPointer) {
	while (state < nonHaltStates) {
		state = program[state | (unsigned char) *pos];
		*pos = (char) state;
		if	(state < 0)
			-- pos;
		else
			++ pos;
		state &= 0x7FFFFF00;
	}
	haltPointer = pos;
	return	state;
}
145.236.136.17 (vita) 2022. május 10., 21:30 (CEST)[válasz]