Skocz do zawartości
Forum Kopalni Wiedzy

Rekomendowane odpowiedzi

Programowanie komputerów rzadko kojarzy się z badaniami naukowymi, choć przecież informatyka również jest nauką. I to nauką mającą wyjątkowo duży wpływ na nasze życie, życie nie tylko posiadaczy komputerów. Za to każdy posiadacz komputera chciałby, żeby programy chodziły mu szybciej. Ba, to trzeba kupić szybszy komputer - powie niejeden. A czy nie da się przyspieszyć bez płacenia?

Sztuka projektowania komputerów zaczęła w ostatnich latach wchodzić w ślepą uliczkę. Dalsze przyspieszanie procesorów staje się coraz trudniejsze. Wyjściem z tej sytuacji miało być postawienie na układy wielordzeniowe, czyli - mówiąc prosto - upakowanie kilku działających równocześnie procesorów w jeden układ scalony. Nie jest to jednak panaceum. Aby osiągnąć przyspieszenie, działający program musi być podzielony na kilka osobnych części, tzw. wątków, z których każdy mógłby dostać osobny rdzeń i działać w tym samym czasie. Przykładowo, kiedy oglądamy film, jeden wątek może odpowiadać za wyświetlanie obrazu, drugi za odtwarzanie dźwięku, trzeci za pokazywanie napisów, itd. Kiedy procesor jest pojedynczy, robi to wszystko jednocześnie sam, a tak naprawdę na zmianę, tylko bardzo szybko. Kiedy rdzeni procesora jest więcej, rozdzielają wątki między siebie i wykonują je naprawdę jednocześnie - równolegle, jak to się nazywa - pilnując tylko, żeby żaden nie wyprzedził reszty.

Takie projektowanie programów, żeby mogły dzielić się na wątki pracujące równolegle, nazywa się zrównoleglaniem (lub z angielska paralelizacją). Ponieważ wielordzeniowe procesory to w miarę nowy wynalazek, starsze programy trzeba napisać na nowo, żeby mogły skorzystać z dobrodziejstwa. Współczesne programy są coraz częściej tworzone wielowątkowo. Ale nie zawsze jest to możliwe. Znaczna część programów nie może być łatwo podzielona na osobne zadania. Ich działanie można porównać do taśmy montażowej: każda operacja jest skutkiem poprzedniej i powoduje następną. Są tak powiązane, że nie można ich rozdzielić. Tak pracują na przykład edytory tekstu, przeglądarki internetowe, czyli programy, których używamy na co dzień. I co nam wtedy po nowoczesnym, choćby ośmiordzeniowym procesorze, skoro program i tak pracuje tylko na jednym? Pozostała moc obliczeniowa po prostu się marnuje.

Problemem zajęli się naukowcy z NCSU - Uniwersytetu Stanowego Północnej Karoliny w USA. Przyjrzeli się oni głębiej działaniu programowej „taśmy montażowej". Każda operacja dzieli się na dwa zasadnicze kroki: program najpierw przydziela sobie odpowiednią ilość pamięci, następnie wykonuje obliczenia, które potem w niej zapisuje. I znów zajmuje się zarządzaniem pamięcią: zwalnia tę już niepotrzebną dla innych programów, lub przydziela sobie kolejną potrzebną porcję. Do tej pory traktowano te kolejne kroki łącznie. Uniwersyteccy inżynierowie postanowili rozbić te nierozłączne do tej pory elementy i wydzielili zarządzanie pamięcią do osobnego wątku.

W nowym podejściu, kiedy wątek obliczeniowy potrzebuje nowej pamięci, lub może zwolnić aktualnie używaną, informuje po prostu drugi wątek - zarządzający pamięcią - co ten ma zrobić, a po skończonej operacji dostaje wiadomość zwrotną i kontynuuje swoją pracę. Jak tłumaczy dr Yan Solihin, kierujący tym projektem, pozwala to na przyspieszenie działania programów o około 20%. Z pozoru nie jest to wiele, ale to przełomowe podejście do tworzenia programów otwiera nowe możliwości. Przykładowo, wątek zarządzający pamięcią może wykonywać dodatkowe operacje, jak wykrywanie anomalii w działaniu programu, czy potencjalnie niebezpiecznych zachowań. Przy zwykłym programowaniu takie funkcje za bardzo opóźniałyby działający program, więc się ich nie stosowało. Przerzucenie ich do drugiego wątku sprawi, że będą się one wykonywać w „wolnym czasie", bez spowalniania i denerwowania użytkownika. Być może dzięki temu w niedalekiej przyszłości nasze komputery zyskają na stabilności i bezpieczeństwie.

Projekt finansowała National Science Foundation (Narodowa Fundacja Naukowa). Współautorami pracy, która zostanie zaprezentowana 21 kwietnia na międzynarodowym sympozjum w Atlancie, byli Devesh Tiwari, Sanghoon Lee i James Tuck.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ciekawe kiedy tylko powstana odpowiednie kompilatory/interpretery/maszyny wirtualne ktore zaczna wykorzystywac ta nowa mozliwosc .

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ciekawe kiedy tylko powstana odpowiednie kompilatory/interpretery/maszyny wirtualne ktore zaczna wykorzystywac ta nowa mozliwosc .

 

Nooo... Taki interpreter to byłoby coś... Wyobraźmy sobie BASIC w takiej architekturze... :D))

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Właśnie, nowy kompilator pozwoliłby na przyspieszenie już istniejących programów. Z drugiej strony, na procesorach jednordzeniowych, a tych jest jeszcze sporo, takie programy musiałyby zwolnić.

 

A BASIC… ciekawe, nie przyszło mi to do głowy. Faktycznie, w przypadku języków intepretowanych taka technika (i podobne) chyba mogłyby dać jeszcze większego kopa. A może są już interpretery, w których np. osobny wątek interpretuje, osobny wykonuje?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z tym BASICiem to taki żart miał być... do śmichu... :D ale z drugiej strony, to na upartego można i tak.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Jurgi - nie, nie zwolniłyby. Zwyczajnie obydwa wątki byłyby wykonywane przez jeden procesor na przemian, ewentualnie jeden byłyby zawieszony do czasu wywołania (ten do zarządzania pamięcią). Właściwie w obu przypadkach by delikatnie przyspieszyło, ale dla wielowątkowych procesorów bardzo wyraźnie (podkreślam: wielowątkowych, np. Pentium 4 już oferowało Hyper Threading, dzisiejszy Simultaneous Multi Threading)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hm, a sama komunikacja między wątkami nie daje narzutu? Oraz konieczność zarządzania dodatkowym wątkiem przez system?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

każda operacja jest skutkiem poprzedniej  i powoduje następną. Są tak powiązane, że nie można ich  rozdzielić. Tak pracują na przykład edytory tekstu, przeglądarki  internetowe, czyli programy, których używamy na co dzień.

 

To niezupełnie tak wygląda. Jedynie jeśli jako "operację" pojmujemy de facto makro-operację, czyli na przykład wspomniane wideo, audio i napisy. Jest to zrównoleglanie zadań. Zrównolegla się tak naprawdę też na poziomie przetwarzania danych, czyli niezależne części kodu lub pętle programu, tak by czasochłonne obliczenia rozłożyć na kilka wątków i co za tym idzie - procesorów. Dzięki temu samo wspomniane dekodowanie obrazu można rozłożyć na kilka wątków. Można jeszcze wspomnieć o superskalarności (równolegle przetwarzanie instrukcji), ale to już domena optymalizacji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Podobna zawartość

    • przez KopalniaWiedzy.pl
      Firma Grohe wprowadziła na rynek zdalnie sterowany prysznic. Można go uruchomić z dowolnego pomieszczenia w mieszkaniu. Dzięki temu od razu wchodzi się pod strumień wody o ustawionej wcześniej w termostacie temperaturze. Trzy przyciski można zaprogramować dla poszczególnych członków rodziny lub na różne pory dnia: zimna woda na przebudzenie rankiem i gorąca, by ułatwić rozluźnianie mięśni pod koniec męczącego dnia.
      Prysznic łączy się bezprzewodowo z jednostką sterującą, co pozwala mu zmieszać ciepłą i zimną wodę w takich proporcjach, by uzyskać żądaną temperaturę. Gdy się to udaje, urządzenie wydaje sygnał dźwiękowy. Ponadto reaguje ono na zmiany ciśnienia wody. Dlatego żaden użytkownik z pewnością nie zostanie nagle oblany wrzącą lub lodowatą wodą. Parametry kąpieli można ustawiać również ręcznie. Temperaturę da się zmieniać skokowo co pół stopnia, a przepływ wody całkowicie płynnie.
      Grohtherm Wireless! Shower kosztuje, bagatela, ok. 744 funtów.
  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...