Programy szybsze o 20 procent

Każdy posiadacz komputera chciałby, żeby uzywane przez niego programy działały szybciej. Ba, to trzeba kupić szybszy komputer - powie niejeden. Ale 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 metoda idealna.

Wiele rdzeni nie pomaga

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.

Reklama

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 jednocześnie, 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ę paralelizacją. Ponieważ wielordzeniowe procesory to w stosunkowo nowy wynalazek, starsze programy trzeba napisać na nowo, żeby mogły skorzystać z tego 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.

Programy szybsze o 20 procent

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 nowej metodzie, 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 proc.

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.

Artur Jurgawka

kopalniawiedzy.pl
Dowiedz się więcej na temat: naukowcy | procent
Reklama
Reklama
Reklama
Reklama
Reklama
Strona główna INTERIA.PL
Polecamy