|
|
tricolour @imc
Mnie raczej chodzilo o wydajność niż o elegancję "językową". O ile dobrze pamiętam to rozkaz porównania z zerem zajmował 11 cykli zegara (CP A,0) a prostą funkcja logiczna, ustawiająca flagę, dwa razy mniej. Te kilka mikrosekund opóźnienia "wydłużone" w pętli może nie wcelować z sołdata, a wtedy on nam odstrzeli dupę - niechlujstwo bywa zgubne. |
|
|
Dark Regis @Tri, w Intelach jest kilka różnych rodzin rozkazów o różnych kodach i czasem o tych samych mnemonikach do ładowania do rejestrów, zapisywania do pamięci, dla operacji arytmetycznych itd. Nie chodzi tylko o rozmiar rejestru dla zachowania kompatybilności z 8-, 16-, 32- bitowymi rejestrami. Są po prostu różne sposoby kodowania w pierwszym lub w pierwszych dwóch bajtach, potem jest dopiero adresacja właściwa lub parametry.
Jeszcze lepiej będzie to widać przy różnych optymalizacjach kompilatora, gdzie może się zdarzyć, ze ciąg pewnych operacji zostanie zastąpiony równoważnym, o którym by nawet filozofowie nie pomyśleli. ;)
W tym ostatnim przypadku chodziło o dwie sprawy: 1) wyrównanie kodu do granicy paragrafu, żeby nie trzeba było przeładowywać do chwilę prefetcha (kolejki rozkazów procesora); 2) unikanie AGI czyli blokady generowania adresu dla pewnych rozkazów, sekwencji, co dawało multum dodatkowych niepotrzebnych cykli. W sumie mógł wyjść kod z kosmosu ;)
Z drugiej mańki jak kiedyś w asemblerze pisałem bodaj symulowane wyżarzanie (simulated annealing), to jest tam masa e do czegoś (rozkład). Zrobiłem program w asemblerze, który to liczył w kilku rozkazach i to dość niedokładnie, ale na tyle, żeby nic się w obliczeniach za bardzo nie zmieniało. Inna funkcja, zaś wynik ten sam. |
|
|
Dark Regis No to tak to się robi z dyskami. Gorzej jest kiedy głowice stukają, bo wtedy trzeba niemal w hermetycznych warunkach otworzyć dysk i wymienić te głowice. Elektronika jest na osobnej płytce, więc bez problemu. W mojej robocie odzyskiwałem raczej dane z dysków sprawnych, tylko albo podmazanych albo czymś zaszyfrowanych. To też był drobny problem, bowiem na początku dysku najczęściej był system operacyjny, zaś dane dopiero po kilkuset tysiącach sektorów dalej. W sumie mogło być na nośniku kilka milionów sektorów. Oczywiście sektory są pogrupowane w klastry po kilka i mapa klastrów jest w FAT. Takie odtwarzanie tablic FAT-u nawet na małym dysku, to jest jednak rzeźba w GWnie, chociaż one są zdublowane ;)
To właśnie wtedy zacząłem szukać jakiejś "metody automatycznej" i spojrzałem życzliwym okiem na logiki modalne. No bo co musiałem cały czas robić? "Czy ten klaster był połączony z tamtym", "czy w klastrach jest zawartość podobna, sugerująca, że to może być jeden plik", "jaki to plik, i jakich danych szukać, żeby kleić klastry w mapę plików", itp. Czyli dokładnie zakładałem, że dane połączenie jest możliwe lub konieczne i sprawdzałem jakie to rodzi konsekwencje i czy się z jakimiś innymi danymi zgadza, czy im zaprzecza i muszę się cofnąć z wnioskowaniem. Z szyfrowaniem było gorzej. Trzeba było znaleźć metodę, a jak zadziałał jakiś "szybki i wściekły" antywirus, to wszystko poszło bye bye, napisać program wczytujący z dysku sektor po sektorze dane, rozszyfrowujący i zapisujący z powrotem. Jak widać musiałem wiedzieć co robię, bo raz podmazane dane w wyniku jakiegoś błędu rozumowania szły się czochrać ;). Tak właśnie odwirusowywaliśmy z kumplem komputer w Coca Coli, gdzie była kampania reklamowa. W sumie wzięliśmy za to bardzo skromnie, bo i roboty było na kilka minut pracy programu deszyfrującego. Resztę czasu poświęciliśmy na siorbanie kawy i opowiadanie kawałów, bo nas zostawiono samych w wielkiej hali. W końcu po pół godziny przyleciał zaniepokojony prezes, widocznie mieli tam monitoring, z grzecznym zapytaniem "czy moglibyście się panowie wziąć wreszcie do roboty, bo my tu też mamy masę pracy jeszcze". Na to my "już dawno to zrobiliśmy, tylko nikt od was nie przychodził", "Ale kiedy? Jak?", "Trzeba było uważać" :))) (dodam dziś z moim wieloletnim doświadczeniem jeszcze "bo ktoś może od was równie sprawnie różne krytyczne dane wyciągnąć"). Nie wiem dlaczego elektroniki tak się drożą, chyba z niewiedzy po prostu ;)))) |
|
|
tricolour @spike
Z wielką przyjemnością zapiszę swój nick jeśli określisz, co to znaczy "zapisz"?
Załadować mam trzy pary rejestrów kodami ASCII? Załadować jakiś bufor? Wysłać dziewięć bajtów do peryferii o jakimś adresie?
😁😁😁 |
|
|
spike "Nie jesteśmy "na ty".
OK, ja lubię Tyskie, więc się nie dogadamy. |
|
|
spike @imć
w kwestii drukarki Mara Błonie, jakaś firma była likwidowana i wyprzedawali różny sprzęt z magazynów, więc ją kupiłem, a potem przerobiłem na ploter grawerujący :))
Przyjaciel zbudował ploter rysujący wykorzystując podzespoły dysku twardego.
Kiedyś w sieci było przepięcie, mój komp zadymił, w procesorze twardego dysku wypalił otwór, problem był z danymi na dysku, firmy "śpiewały takie kwoty', że włosy dęba stawały.
"Potrzeba jest matką wynalazków", ja zastosowałem metodę podmiany, poszukałem w sieci podobny dysk, wyciągnąłem z niego płytę główną i włożyłem do mojego - Eureka, zadziałało, nie na 100%, czego się spodziewałem, ale prawie wszystkie dane odzyskałem :)) |
|
|
tricolour @spike @imć
Sprawa assemblera czy kodu maszynowego, to jest kwestia gustu. O ile pamiętacie, to załadowanie akumulatora w Z80 brzmiało w assemblerze LD A,n co w efekcie dawało kod 3Enn (Hex). A np. Pary rejestrów HL to 21xxyy.
Między jednym i drugim zapisem nie ma - dla mnie - żadnej różnicy jak między uchem lewym i prawym.
😛 |
|
|
spike @imć
sądzę, że w języku procesora nigdy nie pisano programów, to przekracza ludzką percepcję, wymaga szczególnej uwagi, Asembler owszem, chyba pierwszy język wyższego poziomu, którego człowiek jest w stanie się nauczyć, potem ilość języków przybywała, nie wymagała takiej wiedzy programistycznej jak asembler z całym potrzebnym zapleczem.
Obojętnie jaki by nie był procesor, to on jest "sprężyną" całości, ale także "piętą Achillesa", chodzi o jego zegar, bo jeszcze chyba nie wymyślono takiego, którego "tykanie zegara" nie ogranicza. |
|
|
Dark Regis Słusznie. Programowanie na portach to dla asemblerowca czarna magia, tak samo jak dla sprzętowca programowanie pod Windows w asemblerze to też odlot.
Co do wewnętrznego języka AI to proszę zwrócić uwagę na hasło "komputer neuromorficzny":
https://aioai.pl/przyszl…
Jak Pan zapewne wie, żeby zaprogramować sieć neuronową AI trzeba znać co najmniej Pythona, mieć co najmniej bibliotekę TensorFlow, znać się na deep learningu czyli algorytmach, no i przede wszystkich mieć sprzęt o mocy niezłej uczelni. Niektóre firmy, w tym NVidia, produkują już chipy będące specjalizowanym procesorem obsługującym takie tensory i sieci neuronowe. Warto rzucić okiem na to cacko, żeby sobie uświadomić, że to nie są zwykłe procesory tylko coś w podobie "sieci kart graficznych" jak te z koparek Bitcoinów. Tylko wszystko upakowane w kostkę. Mają one wybitną wydajność jeśli chodzi o obróbkę i generowanie video. Ludzie pokazują to na YT.
https://businessinsider…
https://itwiz.pl/czy-now…
https://www.youtube.com/…
Dlatego, reasumując, już nie mamy tych prostych procesorów z linii Intela/AMD/ARM/Motorola/itp. tylko przechodzimy do rzeczywistości z bardzo zagmatwanymi układami logicznymi plus różne wbudowane technologie neuronowe. Tak więc raczej już nie będzie ludzi piszących w jakimś języku procesora, za to w asemblerach jak najbardziej. Czy obliczenia dla potrzeb AI wyjdą poza zwyczajne procesory? Raczej zapytałbym kiedy.....
A przecież mamy jeszcze w blokach startowych komputery "kwantowe".
PS: Swoją drogą warto sprawdzić, czy politechniki w Polsce już zaczęły przygotowywać specjalistów dla tego typu procesorów i technologii? |
|
|
Zbyszek @spike: 1. Nie jesteśmy "na ty". Na ty, to spadaj na buraki.
2. Oczywiście, że assembler/asembler to język wyższego poziomu niż maszynowy, który jest de facto strumieniem zer i jedynek, co do którego istnieją konwencje, traktowania tego strumienia przez procesor. I tak, w tym języku też pisałem programy. Opowiadanie "nie znam człowieka, by napisał binarnie sensowny program" jest tylko selfinkryminacją, bo, co to znaczy i w jakim kontekście "sensownego"? Co ma wynikać z tego stwierdzenia? Że to język, którego ludzie nie rozumieją?
Po co pisać w sposób trudniejszy, gdy można w łatwiejszy? W języku maszynowym nie ma niczego trudnego intelektualnie, asembler jest jego bardziej abstrakcyjną formą zapisu. A języki wyższych poziomów są jeszcze bardziej abstrakcyjnymi formami zapisu. To są różne formy zapisu. Te prymitywne formy zapisu, są po prostu nieefektywne w użyciu, bo trzeba dużego wysiłku na ich przetwarzanie. Łatwo to zrozumieć, gdy spróbować prowadzić księgowość w rzymskim systemie liczbowym zamiast w arabskim. Różnica jest kolosalna, ze względu na formę zapisu TYCH SAMYCH liczb, a nie liczby czy działania. |
|
|
Dark Regis Panie @Spike więcej wiary w ludzi ;)))
Na Odrze na studiach liczył mój Ojciec i stąd mam gdzieś w szpargałach taśmy i karty perforowane. Ja się załapałem już na drukarki wierszowe firmy Mera Błonie. Potem była normalna końcówka z jakiegoś PeCeta. Mój kumpel ze studiów został adminem Odry na PW. Na Odrze zaliczałem pierwsze metody numeryczne FORTRAN-ie, potem drugie w Pascalu na PC-tach. Z drugiej strony na Elektronice stał komputer RIAD, który był ruską kopią IBM 360/470 i tam właśnie miałem zaliczenia z asemblera, metody numeryczne. Z trzeciej strony niejaki Marek Peryt z Elektroniki założył koło naukowe KAMAK, który to był komputerem węgierskim w formie szafy narzędziowej z warsztatu samochodowego, a w nim mieliśmy Amstrady, Amigi i inne takie. Oczywiście tam chodziły już cartridge, kasety i dyskietki (floppy). Wszystko na raz. |
|
|
spike dodam, że coraz mniej dajemy radę, wystarczy wyłączyć prąd i wszystko się wali. |
|
|
spike @imć
wygląda na to, że rozstrzygnąć problem może tylko AI, nie myląc "języka maszynowego procesora" z "maszynowym procesorem", sądzę też, że nie miałaby problemu ze zrozumieniem znaczenia określenia - "języka maszynowego procesora", który ma postać czysto binarną, nieważne ilu bitową.
To zdanie mnie zastanawia:
"Dodam, że "wewnętrzny język AI" nie ma nic wspólnego z językiem procesorów."
ja bym odwrócił kolejność, że język procesora nie ma nic wspólnego z językiem AI.
Cokolwiek by chciała zrobić AI, swoje żądania kieruje do procesora, więc musi swoje polecenia skompilować do poziomu procesora.
Czy bez procesora AI cokolwiek zrobi? |
|
|
Dark Regis @tricolour, bo to były różne wydziały na polibudzie. Programowaniem kart za pomocą portów komunikatami w IN, OUT-ach zajmowali się elektronicy i informatycy, zaś u mnie na matmie stosowanej mieliśmy prawdziwy asembler ODRY, RIAD-a, a potem także PC-ta. Tak jak mówiłem to są kompletnie różne sprawy i różne kompetencje. Przykładowo ja używałem w firmie asemblera do obu zadań:
!) na przykład wydłubywałem te różne dema na portach i na karcie graficznej i robiłem tak, żeby działały samodzielnie, miałem kilka przypadków sczytywania danych kart rozszerzenia i magistrali, a także zajmowałem się trybem wirtualnym procesora i driverami Windows. W małym stopniu można to coś nazwać "programowaniem", bo najczęściej wypełnia się jakieś struktury jakąś tajemniczą treścią na podstawie równie tajemniczych książek i samouczków pisanych w sieci przez różnych speców typu Matt Pietrek ;)
2) Pisałem aplikacje okienkowe pod Windows w asemblerze i nie stanowiło to dla mnie problemu, żeby w tym celu czytać podręczniki do programowania Windows w C/C++. Pisałem też DLL-e, programy wyrzucające z siebie wątki, synchronizowane mutexami i różne takie kontrolki COM/DCOM. Najzabawniejszy projekt, to był interpreter kodu procesora, czyli takie coś co robiło deasemblecje i jednocześnie liczyło jak na wirtualnym procesorze. A także miało obsługiwać wirtualną kartę graficzną, kartę sieciową, każde urządzenie, które miałoby wpływ na obliczenie np. sprawdzenie ticków zegara systemowego, prefetcha, no i wirtualny dysk twardy. Chyba teraz coś takiego nazywają debugerem/interpreterem z piaskownicą ;)
Dlatego muszę dodać do dyskusji uwagę, że programowanie w języku procesora to jest z kolei w tym kontekście dużo więcej niż programowanie w asemblerze, bowiem duża część rozkazów procesora nie działa, a także wiele rejestrów procesora nie jest dostępna na Ring 3, czyli na poziomie odpalania aplikacji Windows. Na poziomie driverów Ring 0 wszystkie są zaś aktywne. No chyba, że Microsoft przez te 25 lat poszedł po rozum do głowy i wykorzystuje do czegoś Ring 1 i Ring 2 ;)))) |
|
|
spike @tri, @zbyszek
zapisz w języku procesora swój nick
:))))))))))))
Asembler już jest językiem wyższego poziomu od języka procesora, który jest kompilowany do postaci binarnej 0,1.
nie znam człowieka, by napisał binarnie sensowny program.
Jeżeli się nie mylę, programy na Odrę były zapisywane na taśmie papierowej w postaci binarnej.
Ten zapis ma historię dłuższą niż komputery, a w nich został zastosowany. |
|
|
Dark Regis Nie, w autonomiczne statki podwodne. Zresztą ruscy tym samym straszą od bardzo dawna np. wybrzeża USA lub GB. Wystarczy posłuchać bełkotów "prezydenta" Miedwiediewa. |
|
|
tricolour Oczywiście, że znany, nie ma dyskusji. Najwyraźniej nasz kolega niczego nie rzeźbił w assemblerze.
Zadanie projektowe z realizacją sprzed kilku dekad: klon 8051, 2kB pamięci - zrobić regulator PID z interfejsem użytkownika zawierającym cztery wyświetlacze 12-segmentowe LED oraz osiem klawiszy. Jako element tablicowy.
Teraz bez 4GB nawet bym nie pomyślał, że można obsłużyć wyłącznik... |
|
|
Dark Regis @Zbyszek_S, a zna Pan język "maszynowego procesora" praktycznie, czy też słyszał Pan tylko, że ktoś gdzieś w dalekim świecie go zna? ;)
Dodam, że "wewnętrzny język AI" nie ma nic wspólnego z językiem procesorów. Wydaje się mieć coś wspólnego z podanym przeze mnie przykładem automatów probabilistycznych Buchiego.
https://www.cs.cmu.edu/~…
https://en.wikipedia.org…
Więcej:
"Buchi automata can be used as an initial step to initialize the network weights before fine-tuning the network to more challenging tasks." https://arxiv.org/pdf/22…
PS: Pytanie jest zasadne, bowiem programowanie w asemblerze i programowanie w hexach (np. magistrali lub kart rozszerzenia poprzez wysyłanie jakichś ESC lub IN, OUT, tudzież PORT) to są dwie różne sprawy. :D |
|
|
Zbyszek "Ale to nie chodziło o maszynowego procesora tylko o język maszynowy tegoż/tamtegoż procesora"
Ale to nie ma znaczenia. Język maszynowy procesorów jest ludziom doskonale znany. Sam w nim programowałem. W czym problem? W tym, że ktoś go nie zna i wygłasza opinie na jego temat, pozorując coś tam? |
|
|
Zbyszek "Chiny wsadziły AI w torpedy autonomiczne z głowicami termojądrowymi, które mają za cel wykończyć wielkie miasta na wybrzeżach w USA."
Dobrze, że nie w żaglowce. |
|
|
tricolour Ale to nie chodziło o maszynowego procesora tylko o język maszynowy tegoż/tamtegoż procesora.
Interpreter się koledze jorgnął na klasie gramatycznej.
😁😁😁 |
|
|
Zbyszek już wiemy, że AI opracowała "własny język", którego człowiek nie rozumie, podobnie jak nie rozumie języka maszynowego procesora, dlatego języki programowania są wyższego poziomu, rozumianego przez człowieka, który jest kompilowany do postaci maszynowej procesora, którego tylko on "rozumie"
To nieprawda. My - tutaj ludzie - rozumiem język "maszynowego procesora" bardzo dobrze. |
|
|
Dark Regis Co do wojskowości, to Chiny wsadziły AI w torpedy autonomiczne z głowicami termojądrowymi, które mają za cel wykończyć wielkie miasta na wybrzeżach w USA. AI ma rozwiązać proste zadanie "jak przeniknąć linie obrony i zdetonować ładunek", nie ma za zadanie zastanawiania się, czy zabijanie przypadkowych mas mionów cywilów w miastach jest etyczne. To już jest od dawna nurt rwący tylko w jedną stronę. Zawracanie kijem Wisły można więc (będzie zasadne) postrzegać jako ewidentną współpracę z chińskim wywiadem ;) |