Tiedeosion fysiikkapalstalla oli asiaa prosessorien huonontumisesta. Kannattaa käydä lukemassa se. Muutenkin tiedepalstoilla voisi olla teitä kiinnostavaa asiaa...
Minulle tuli mieleen, että jonkinlaisen prosessorintarkistuksen voisi väsätä itsekin, eikä tarvitse käyttää kuulemma kalliita kaupallisia softia. Emuloidaan FPU:ta vanhanaikaisella kokonaislukulaskennalla, lasketaan samat luvut normaalisti FPU:lla ja verrataan tuloksia. Kuinka kauan kestää yksi prosessorin läpikäynti tällä tavalla? Millä muulla tavalla prosessori voi tarkistaa itse itseään?
Yksi läpikäynti ei välttämättä paljasta fyysistä huonontumista koska vika voi tarkoittaa virheen todennäköisyyden kasvua per lasku. Myös lämpötila vaikuttaa. Tätä voi tehdä monta tuntia tai päivää putkeen, mahdollisesti softalla joka pyörii taustalla koko ajan. Olisi mielenkiintoista nähdä tilastoja eri koneilta, jos tästä nyt tilastoksi asti virheitä ilmenee.
Minulle tuli mieleen, että jonkinlaisen prosessorintarkistuksen voisi väsätä itsekin, eikä tarvitse käyttää kuulemma kalliita kaupallisia softia. Emuloidaan FPU:ta vanhanaikaisella kokonaislukulaskennalla, lasketaan samat luvut normaalisti FPU:lla ja verrataan tuloksia. Kuinka kauan kestää yksi prosessorin läpikäynti tällä tavalla? Millä muulla tavalla prosessori voi tarkistaa itse itseään?
Yksi läpikäynti ei välttämättä paljasta fyysistä huonontumista koska vika voi tarkoittaa virheen todennäköisyyden kasvua per lasku. Myös lämpötila vaikuttaa. Tätä voi tehdä monta tuntia tai päivää putkeen, mahdollisesti softalla joka pyörii taustalla koko ajan. Olisi mielenkiintoista nähdä tilastoja eri koneilta, jos tästä nyt tilastoksi asti virheitä ilmenee.
Vastaukset 3
Vanhimmat
"Minulle tuli mieleen, että jonkinlaisen prosessorintarkistuksen voisi väsätä itsekin, eikä tarvitse käyttää kuulemma kalliita kaupallisia softia. Emuloidaan FPU:ta vanhanaikaisella kokonaislukulaskennalla, lasketaan samat luvut normaalisti FPU:lla ja verrataan tuloksia. Kuinka kauan kestää yksi prosessorin läpikäynti tällä tavalla?"
Tämä ajattelu perustuu oletukseen, että CPU:n aritmeettislooginen yksikkö, ALU veisi monimutkaisesta prosessorista suuren osan monimutkaisuutta. 25-30 vuotta sitten näin olikin. En ole enään asiantuntija, mutta olettaisin että nykyisissä prosessoreissa liukuhihnan hallintalogiikka, jonka on huomioitava erilaisia suoritussekvenssejä riipuvuuksineen ja haarautumisineen on ylivoimaisesti monimutkaisempi kuin ALU. Sen erilaisten tilanteiden, poikkeuksien ja poikkeuksienpoikkeuksien huomioiminen testisoftassa edellyttää sen rakenteen yksityiskohtaista tuntemista.
Tekemällä tietoisesti hyvin monimutkaista ja monipuolista koodia, joka antaa ison pureskelun jälkeen odotetun tuloksen voisi testata CPU:n toimintaa melko laajasti. Koodin pitäisi myös sisältää monipuolisesti erikokoisia datapaketteja ja koodilohkoja (koodin pitäisi tästäkin syystä olla niin iso, että se ei kerralla mahdu sisään) jotta cache-muistin eri tilanteet huomioitaisiin.
Myös multithreading olisi hyvä testata.
Testiä ei ilmeisesti huonontaisi se, että sitä ajettaisiin taustaprosessina koko ajan, päin vastoin.
Joo voihan sitä tehdä softan mutta jos esim haluat testata 32-bittisen kertolasku ytimen ilman että tiedät miten se on tehty niin joudut ajaa kaikki eri kombinaatiot läpi ja niitähän tulee (2^32)^2 = 1.84E19 laskua (Onkohan oikeen laskettu. Mutta maapallo taitaa tuhoutua ennekuin prosu on saatu testatuksi).
Eli täytyy tietää miten prosu on sisäisesti rakennettu jotta sitä edes pystyisi testailee. Eikös tässä jokunen vuosi sitten johonkin Pentium prosessoriin ollut jäännyt liukulukuyksikköön joku bugi jonka johdosta joku tietty lasku antoi väärän tuloksen (Muistaako ketään)?
"Eli täytyy tietää miten prosu on sisäisesti rakennettu jotta sitä edes pystyisi testailee."
Ei pidä paikkaansa tarkkaan ottaen. Vaikka alkeellinen testaussofta testaakin samoja transistoreita moneen kertaan, niin se on alunperinkin tavoitteena, koska vian luonteena voi olla häiriön todennäköisyyden kasvu - ei varma häiriö jossain transistorissa. Tarkoitus on testata osatiloja eikä kokonaistiloja. Kaikkien kokonaistilojen testaamiseen ei riitä paraskaan softa. Vakava softa voi testata kaikki transistorit vähintään 1 kerran paljon nopeammin kuin tämän foorumin käyttäjien kyhäelmät.
Joku satunnaislukuja eri suuntiin laskeva pieni softanpätkä ajaisi asian melko hyvin. Ensin voi kertoa xy=a ja sitten jakaa x=a/y ja sama juurista ym.
Voi summata jonkun välin satunnaislukuja johonkin rajaan asti jonka jälkeen se vaihtuu miinustamiseksi jne...
Voi myös laskea kuvan pikselien summaa tuhat tai miljoona kertaa peräkkäin ja katsoa poikkeaako minkään laskemiskerran tulos.