Ratuj Głuszca
brak-podgladu-600

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 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 na międzynarodowym sympozjum w Atlancie, byli Devesh Tiwari, Sanghoon Lee i James Tuck.

Źródło: kopalniawiedzy.pl

Jeden komentarz :) w artykule: ”Szybsze programy dzięki naukowcom?”

  1. cheap madden 16 coins…

    Hey, great online site you’ve got here…

Wypowiedz się

Musiszsię zalogować aby dodać komentarz.