Goto page Previous 1, 2, 3, 4, 5, 6 Next
Sylwester Łazar
Guest
Tue Feb 25, 2014 9:30 am
Quote:
Tylko przyjemne to nie jest, i jak piszesz - na niektorych program
chodzi, na innych nie chodzi, na innych chodzi gorzej - i nie
wystarczy przestawic opcji w kompilatorze.
Ludzie sudoku godzinami rozwiązują, a Ty piszesz, że to nieprzyjemne

Quote:
Dla przykladu - problem z dzisiejszego egzaminu
Problem 7 - 15 points. Given is the following fragment of a program
executed by a pipeline
add $s0, $s0, $t1
lw $t2, 20($t1)
and $t4, $t2, $t5
or $t8, $t2, $t6
add $t9, $t4, $t2
slt $t1, $t6, $t7
Answer the following questions:
(1) Is there data hazard in the above code?
(2) If there is data hazard, show how it can be resolved by:
(a) Stalling the pipeline (inserting bubbles)
(b) Inserting nop instructions
(c) Rearranging instructions
Consider 2 cases: with forwarding and without forwarding
Nie powinno byc to zalatwione sprzetowo - procesor sam wstawia nop
zanim dane nie beda osiagalne ? Oczywiscie nadal kompilator moze
optymalizowac.
Jeżeli kompilator miałby wstawiać nopy, to jest to najgorsze rozwiązanie,
ale za to bardzo proste.
W powyższym kodzie, jak wstawisz po każdej instrukcji NOP bez żadnej
analizy,
to możesz już się kłócić z wykładowcą, że przecież rozwiązałeś problem.
Twoim koronnym argumentem będzie, że przecież Ubuntu ma tyle megabajtów,
a Ty tylko 6 nopów dałeś!
Ślepy indianin już zauważy, że instrukcja wykonywana na końcu:
slt $t1, $t6, $t7
nie korzysta z rejestrów, które są zmieniane w poprzednich pięciu.
Możesz ją przesunąć i masz NOPA
S.
Sylwester Łazar
Guest
Tue Feb 25, 2014 9:36 am
Quote:
To jest prawda. Dobrze sobie zdawac sprawe co kompilator robi z
programem... Ksiazka H&P w sporej czesci traktuje wlasnie o tym
problemie
Był tam gdzieś fragment też o tym, że dobrym zwyczajem jest zaglądnąć do
kodu po kompilacji i go poprawić.
Ale to akurat nie ma sensu. Mialo sens 30 lat temu, w dobie Z80. MIPS
i wspoczesne procesory oparte sa o "pipeline architecture". Kompilator
dokonuje znaczacej optymalizacji kodu tak aby jak najlepiej
wykorztstac owa "pipeline". Sprowadza sie to - miedzy innymi, ale nie
tylko - do zmiany kolejnosci wykonywanai instrukcji i przydzielania
rejestrow co wymaga globalnej analizy programu.
Chyba nagiąłem nieco słowa autora

Wklejam więc w oryginale:
--------------------------
10.2 Code Development for Embedded Processors
An embedded system usually lacks secondary storage (e.g. a hard disk).
Typically all of
the code is stored in Read Only Memory (ROM). Usually, most of the code
written for
embedded processors is first written in a high-level languages such as C.
Programmers
who can visualize how the high-level code will be translated into assembly
language code
will most likely develop the "best" code. Then programmers who have an
intimate
understanding of the assembly language for the target processor, will
analyze the code
generated by the compiler looking for ways to make further optimizations.
In other
words, they look for ways to speed up the execution, or to reduce the amount
of code that
has to be stored in ROM. Typically, for real-time applications, the code
must be finetuned,
to meet the system's performance requirements. Any programmer with the
skills to
accomplish this kind of optimization will be highly sought after.
The kernel of the
operating system deals with responding to interrupts and scheduling tasks.
This code as
well as the I/O drivers will typically be the first code to be scrutinized.
--------------------------
Dalej jest też trochę o 68000 i programowaniu w asm na inne:
The Motorola 68000 and its derivatives currently have the largest share of
the embedded
market. While the MIPS processor is classified as a RISC processor, the
Motorola 68000
is classified as a Complex Instruction Set Computer (CISC). With a solid
understanding
of the MIPS processor and experience in developing assembly language code
for the
MIPS processor, it is a relatively easy task to make the transition to
assembly language
for other processors.
S.
Sylwester Łazar
Guest
Tue Feb 25, 2014 9:50 am
Quote:
To bylo 40 lat temu... Nie mam. Nawet nie pamietam dokladnie o czym
pisalem...Cos o radiach transystorowych i lampowych... Takie
porownanie technologii
Z samplow to mam moje najwieksze dzielo literackie: ksiazke
Programowanie Milkrokomputerow w Jezyku Basic. Wydana pzrez Sigme.
Taka czerwona okladka. Wczesne lata 80
Pierwszy naklad - cos 20 tysiecy, o ile pamietam, rozszedl sie w pare
godzin. Potem byly dodruki, w sumei cos ze 200 tysiecy
Ale forsy na tym nei zrobilem.. .Honoraria byly g...ne. Tyle co mi
zostalo to to ze przyczynilem sie do "rewolucji komputerowej.
P.S. Drugei dzielo literackie z duzym sukcesem to Automatyka w
Pytaniach i Odpowiedziach. Miala niezykle powodzenie bo ludzie tego
sie wkuwali do egzaminow magisterskich, a na niektorych
prowincjonalnych uczelniach byla podrecznikiem.
W takim razie Panie Andrzeju, skladam gorace podziekowania za wlozona prace.
Bardzo dziekuje w imieniu tych, co sie uczyli na Pana materialach i
korzystali
z ogromnej wiedzy.
No prosze, jakich wybitnych naukowców mozna znalezc na p.m.e. !
Pozdrawiam,
S.
A.L.
Guest
Tue Feb 25, 2014 3:22 pm
On Tue, 25 Feb 2014 09:30:09 +0100, Sylwester Łazar <info@alpro.pl>
wrote:
Quote:
Jeżeli kompilator miałby wstawiać nopy, to jest to najgorsze rozwiązanie,
ale za to bardzo proste.
W powyższym kodzie, jak wstawisz po każdej instrukcji NOP bez żadnej
analizy,
to możesz już się kłócić z wykładowcą, że przecież rozwiązałeś problem.
Nie moze sie klocic, bo pytaniw bylo sformulowana jak sformulowane.
Quote:
Ślepy indianin już zauważy, że instrukcja wykonywana na końcu:
slt $t1, $t6, $t7
nie korzysta z rejestrów, które są zmieniane w poprzednich pięciu.
Możesz ją przesunąć i masz NOPA
S.
Tylko polowa studentow t ozauwazyla.
No dobra, ale teraz miej 10K takich instrukcji i zrob optymalizacje
ercznie
A.L.
A.L.
Guest
Tue Feb 25, 2014 3:24 pm
Quote:
market. While the MIPS processor is classified as a RISC processor, the
Motorola 68000
is classified as a Complex Instruction Set Computer (CISC). With a solid
understanding
of the MIPS processor and experience in developing assembly language code
for the
MIPS processor, it is a relatively easy task to make the transition to
assembly language
for other processors.
S.
Z tym sie zgadzam. Z poprzednim - niekoniecznie
A.L.
A.L.
Guest
Tue Feb 25, 2014 3:40 pm
On Tue, 25 Feb 2014 09:05:28 +0100, sundayman
<sundayman@poczta.onet.pl> wrote:
Quote:
Dokladnie to. Frelek to nei ja, to moj wspolautor
Ciekawe ze ludzie jeszcze tym handluja...
Quote:
A.L.
Sylwester Łazar
Guest
Tue Feb 25, 2014 4:05 pm
Quote:
No dobra, ale teraz miej 10K takich instrukcji i zrob optymalizacje
ercznie
A.L.
Zauważ proszę, że takie myślenie jest podobne do niekontrolowanej reakcji
atomowej.
Jeżeli wyciągniemy pręty, jak w Czernobylu, zaraz się okaże, że co drugi kod
potrzebuje 1TB dysku.
Taka optymalizacja mechaniczna jest protezą, źle napisanego kodu.
Studiowanie MIPSów i tych chorych DELAY slots, zmuszała mnie do
przestawiania instrukcji, czy funkcji
na poziomie, nie mechanicznym, a logicznym.
Czuło się tak, jakby dwie procedury należało nałożyć na siebie jak firanka z
zasłonką,
aby wykonywały się równocześnie.
Żaden kompilator tego nie zrobi lepiej. Może najwyżej poprawić coś, co się
przeoczyło.
Jednak zgadzam się z tym, że te sloty to niepotrzebne utrudnienie.
Gdzieś wyczytałem, że w starych rozwiązaniach był jeszcze problem DELAY
slotów.
Jednak zwalanie całej roboty na kompilator i ufanie w jego nadzwyczajne
możliwości, jest
też na wyrost.
Toż przecież jeśli programista nie podglądnie jak będzie wyglądał jego kod
po skompilowaniu,
to zadowala się tym co jest, jeśli jakoś tam działa. Długość kodu w ogóle go
nie interesuje.
Jeśli nie starczy - wybierają większy chip.
A program ma regulację dwupołożeniową zrobić :-)
Jeżeli przyjrzysz się temu co wyprawia kompilator w środowisku MPLABa, to
zauważysz,
jak odkłada na stos wszystkie rejestry (tak na wszelki wypadek pewnie

),
a potem robi "r5++" i następnie ściąga z mozołem tobołki ze stosu.
A to tylko dlatego, że jest procedura obsługi przerwania i tak przyjęli
twórcy kompilatora.
Piszę też w C. Jednak do aplikacji działających w okolicy ~Tcy, kompilator
psuje możliwości
kontrolera. Wtedy trzeba brać większą kostkę i lepszy kompilator.
Potem już tylko Windows i robią się te 10k kody.
To zdecydowanie nie moja działka.
Ja lubuję się w zwartych i szybkich rozwiązaniach i przekroczenie 2k kodu to
rzadkość.
Zostawiam pole 10k dla innych
S.
J.F
Guest
Tue Feb 25, 2014 4:45 pm
Użytkownik "Sylwester Łazar" napisał w wiadomości
Quote:
Tylko przyjemne to nie jest, i jak piszesz - na niektorych program
chodzi, na innych nie chodzi, na innych chodzi gorzej - i nie
wystarczy przestawic opcji w kompilatorze.
Ludzie sudoku godzinami rozwiązują, a Ty piszesz, że to nieprzyjemne
Sudoku moze i jest przyjemne (dla mnie przestalo jak zobaczylem
program rozwiazujacy), ale to to nie.
Pulapka w kazdej instrukcji.
Chwale procesory, gdzie w assemblerze pisze sie prawie tak samo szybko
jak w C.
Quote:
Dla przykladu - problem z dzisiejszego egzaminu
Problem 7 - 15 points. Given is the following fragment of a
program
executed by a pipeline
add $s0, $s0, $t1
lw $t2, 20($t1)
and $t4, $t2, $t5
or $t8, $t2, $t6
add $t9, $t4, $t2
slt $t1, $t6, $t7
Nie powinno byc to zalatwione sprzetowo - procesor sam wstawia nop
zanim dane nie beda osiagalne ? Oczywiscie nadal kompilator moze
optymalizowac.
Jeżeli kompilator miałby wstawiać nopy, to jest to najgorsze
rozwiązanie,
ale za to bardzo proste.
Ale ja postuluje zeby to robil procesor ... w miare potrzeby.
Tak swoja droga to duze brawa dla konstruktorow z Intela, ze udalo im
sie to wszystko i wiecej w procesor upchnac.
J.
Sylwester Łazar
Guest
Tue Feb 25, 2014 5:14 pm
Quote:
Jeżeli kompilator miałby wstawiać nopy, to jest to najgorsze
rozwiązanie,
ale za to bardzo proste.
Ale ja postuluje zeby to robil procesor ... w miare potrzeby.
No to się nie da, bo jest taki jak go fabryka wyprodukowała.
Kompilator ma zawsze 6 etapów rozwoju:
1) zamienić HIGH Level na asm byle by jakoś działało.
i wtedy przynosi dla piszącego krocie:
a) na sprzedaży urządzenia
b) na serwisie oprogramowania
2) Wprowadzić optymalizację kodu poprzez wstawianie NOPów.
To się marketingowo sprzedaje, porównując do 3 innych z punktu 1)
3) Wprowadzić optymalizację kodu, który przestawia instrukcje.
Nazwać go jakimś słowem: ULTRA, LUX czy podobnie.
Cena x4 i dużo reklamy. Piszący ciągle nie zauważa różnicy
4) Wprowadzić 100 checkboxów, aby każdy mógł sobie sam zrobić kompilator
jaki potrzebuje.
Wtedy ludzie się wymieniają informacjami, jak najlepiej poustawiać silnik,
aby zapalił. Za niektóre złote checkboxy trzeba dopłacić.
Cena kompilatora x10. Programista ma już 1/4 głowy siwych włosów.
5)SUPER, CROSS, MULTI FUNCTIONAL, 5 GENERATION COMPILER
Ten już ma wszystko. Cena x20, kupują już go nieliczni, kod po kompilacji
jest tylko 5x dłuższy niż tego z pkt.1)
6) WEB Kompilator .
Aplikacja wysyła kod źródłowy na serwer. Tam 1000 programistów z całego
świata, ręcznie, kompilują fragmenty. Wygrywa najszybszy kod i taki wraca do
użytkownika.
Użytkownik oczywiście w niczym się nie orientuje, bo trwa to 5 minut i w tym
czasie na ekranie lecą mu różne losowo
wybrane komunikaty, których nikt na świecie jeszcze nie czytał on-line.
:-)
S.
Sebastian BiaĹy
Guest
Tue Feb 25, 2014 5:15 pm
On 2014-02-24 15:50, Marek wrote:
Quote:
W asm? Jeśli tak to Sylwek się ucieszy bo pic32 to mips
Jedna z ciekawszych pozycji o asm jakie miałem okazję czytać tez bazuje
*właśnie* na MIPS:
http://en.wikipedia.org/wiki/Hacker's_Delight
Sylwester Ĺazar
Guest
Tue Feb 25, 2014 5:43 pm
Quote:
Teraz już nie ma hackerów. Jest Facebook.
S.
sundayman
Guest
Tue Feb 25, 2014 6:46 pm
Quote:
W takim razie Panie Andrzeju, skladam gorace podziekowania za wlozona prace.
Bardzo dziekuje w imieniu tych, co sie uczyli na Pana materialach i
korzystali
z ogromnej wiedzy.
Popieram ! :)
Quote:
No prosze, jakich wybitnych naukowców mozna znalezc na p.m.e. !
ano, szczęśliwie na usenecie można jeszcze trafić na parę wartościowych
osób oprócz dzieci neostrady.
Przemek
Guest
Tue Feb 25, 2014 7:48 pm
Quote:
Jeszcze potem był taki na ULN1321 zdaje się.
Dokładnie
Tego ja robiłem, niestety 500km od Wawy słabo działał, ale inne stacje
ściągał
Przem
Przemek
Guest
Tue Feb 25, 2014 7:59 pm
Quote:
Hehe, też gdzieś to powinienem mieć.

I drugą część/kontynuację
również, ponieważ, AFAIR, wyszło coś takiego.
Do tego "Elektronika łatwiejsza niż przypuszczasz" w czterech tomach i
"Radioelektronika dla praktyków"...
Oj robi się zbowidowo
Przem
Sylwester Ĺazar
Guest
Tue Feb 25, 2014 9:28 pm
Użytkownik Przemek <raz@onet.pl> w wiadomości do grup dyskusyjnych
napisał:leioiu$j3q$1@node1.news.atman.pl...
Quote:
Jeszcze potem był taki na ULN1321 zdaje się.
Dokładnie
Tego ja robiłem, niestety 500km od Wawy słabo działał, ale inne stacje
ściągał
Przem
O kurcze! powinno być UL1321N. Przepraszam.
Ja to nawet nie pamiętam, jak odbierał w Poznaniu, ale chyba dobrze, bo
wspomnienia są miłe.
S.
Goto page Previous 1, 2, 3, 4, 5, 6 Next