Optymalne programowanie
W historii informatyki optymalne programowanie lub optymalne kodowanie to praktyka układania instrukcji programu komputerowego w pamięci w taki sposób, aby zminimalizować czas, jaki maszyna spędza na oczekiwaniu na instrukcje. Ma znaczenie historyczne, głównie ze względu na konstrukcję wielu wczesnych komputerów cyfrowych.
Większość wczesnych komputerów korzystała z jakiejś formy pamięci szeregowej, głównie pamięci linii opóźniającej lub bębnów magnetycznych . W przeciwieństwie do pamięci o dostępie swobodnym współczesnych komputerów, słowa w pamięci szeregowej są udostępniane pojedynczo; czas wymagany do uzyskania dostępu do określonego słowa zależy od „odległości” między nim a aktualnie czytanym słowem. Gdyby dana linia opóźniająca zawierała n słów, średni czas odczytania słowa wyniósłby n /2 razy słowo. Bez optymalnego kodowania taka maszyna spędzałaby większość czasu bezczynnie czekając na instrukcje i dane.
Aby obejść ten problem, wiele maszyn, w szczególności ACE Alana Turinga i jego potomków zawierały pole określające adres następnej instrukcji do wykonania w ich formacie instrukcji. Programista wykorzystujący optymalne kodowanie sprawdzałby czas potrzebny do wykonania bieżącej instrukcji, obliczał, jak daleko system pamięci przesunąłby się w tym czasie, a następnie umieszczał kolejną instrukcję programu w tym miejscu. Kiedy więc bieżąca instrukcja została zakończona, a komputer szukał następnej, zgodnie z instrukcją, ta komórka pamięci właśnie nadeszłaby i byłaby możliwa do natychmiastowego wczytania. Na przykład, jeśli programista właśnie zakodował ADD
pod adresem 400, a plik ADD
wymagała wykonania 4 słów, programista ustawia pole „następny adres” instrukcji na 404 i umieszcza tam następną instrukcję.
W Stanach Zjednoczonych optymalne kodowanie było najczęściej stosowane w IBM 650 i Bendix G-15 . Obie maszyny miały asemblery optymalizujące (SOAP dla IBM, POGO dla Bendix), które mogły zautomatyzować to zadanie.
Zobacz też
- Mel Kaye , który jest autorem jednego szczególnie sprytnego fragmentu optymalnego programowania, który wszedł do wiedzy o komputerach, jest opisany w The Story of Mel .