Core i7 - nie ma błędu TLB
Zgodnie z informacjami opublikowanymi wczoraj przez serwis Fudzilla, błąd związany miał być z tzw. buforami TLB (Translation Lookaside Buffers), a do owego "poważnego" błędu Intel miał się sam przyznać w dokumencie zamieszczonym pod adresem: http://download.intel.com/design/processor/specupdt/320836.pdf
Przyjrzeliśmy się uważnie owemu dokumentowi. Jakakolwiek wzmianka o TLB występuje w nim kilkakrotnie, przy czym na powoływanej przez serwis Fudzilla 37. stronie tego dokumentu nie ma mowy o żadnym błędzie w procesorach Core i7. Znajduje się tam jedynie wyjaśnienie dla użytkowników starszego podręcznika dla programistów intelowskich architektur Intel 64 i IA-32 informujące po prostu o zdezaktualizowaniu się pewnych instrukcji, których dalsze stosowanie może powodować zawieszanie się komputera. Jak więc widać, nie jest to błąd w układach Core i7, lecz po prostu informacja aktualizująca stare podręczniki dla specjalistów programujących układy Intela.
Chcąc do końca zachować rzetelność dziennikarską, wypadałoby jeszcze pokrótce wyjaśnić, czym są owe "tajemnicze" bufory TLB, gdyż i w tym względzie serwis Fudzilla nie przedstawił choćby słowa wyjaśnienia, poprzestając jedynie na cytowaniu wyrwanego z kontekstu zdania ze wspomnianego dokumentu.
Od dość dawna we wszystkich głównych jednostkach obliczeniowych (CPU) stosuje się tzw. predykcję, czyli – w dużym uproszczeniu – rozwiązania umożliwiające przewidzenie przez procesor struktury programu. Należy pamiętać, że żaden współczesny program nie jest wykonywany jako jednolity ciąg instrukcji; dość spory odsetek wykonywanych instrukcji to instrukcje skoków oraz inne rozgałęzienia w kodzie.
Obecnie wszystkie procesory – zarówno AMD, jak i Intela – są wyposażane w układy predykcji (przewidywania) rozgałęzień programu, dzięki czemu możliwe jest oszacowanie prawdopodobieństwa tego, czy wczytywane przez procesor instrukcje będą rzeczywiście wykonywane w ciągu, czy też nastąpi skok do zupełnie innej gałęzi kodu aplikacji. Analizowana jest zarówno historia wykonanych już operacji, jak i obserwacja tego, co miałoby się zdarzyć. Właśnie do takiej "przyszłościowej" obserwacji przeznaczone są bufory TLB, których najbardziej odpowiednim polskim określeniem byłoby "bufory transakcji wyprzedzających". Ich zadaniem jest przyjmowanie i analiza instrukcji w kodzie programu przeznaczonych do ewentualnego wykonania, ale wyprzedzających te, które aktualnie znajdują się w potoku wykonawczym procesora.
Reasumując: cały rozdmuchany przez Fudzillę "problem" z procesorami Core i7 okazał się być jedynie drobną poprawką dla programistów.
Źródło: Informacja własna; Intel