Jednoukładowy komputer Super Harvard Architecture
Super Harvard Architecture Single-Chip Computer ( SHARC ) to wysokowydajny zmiennoprzecinkowy i stałoprzecinkowy procesor DSP firmy Analog Devices . SHARC jest używany w różnych zastosowaniach przetwarzania sygnałów, od przetwarzania dźwięku , przez pociski artyleryjskie z jednym procesorem, po komputery przetwarzające radary poza horyzontem z 1000 procesorami. Oryginalny projekt pochodzi z około stycznia 1994 roku.
Procesory SHARC zwykle mają mieć dużą liczbę łączy szeregowych z innymi procesorami SHARC w pobliżu, które mają być używane jako tania alternatywa dla SMP .
Architektura
SHARC to adresowany słownie procesor VLIW o architekturze Harvarda ; nie wie nic o wartościach 8-bitowych lub 16-bitowych, ponieważ każdy adres jest używany do wskazania całego 32-bitowego słowa, a nie tylko oktetu . Nie jest to zatem ani little-endian, ani big-endian, chociaż kompilator może używać dowolnej konwencji, jeśli implementuje 64-bitowe dane i/lub jakiś sposób na spakowanie wielu 8-bitowych lub 16-bitowych wartości w pojedyncze 32-bitowe słowo. W C znaki są 32-bitowe, ponieważ są standardowo najmniejszymi adresowalnymi słowami.
Rozmiar słowa wynosi 48 bitów dla instrukcji, 32 bity dla liczb całkowitych i zwykłych zmiennoprzecinkowych oraz 40 bitów dla rozszerzonych zmiennoprzecinkowych. Kod i dane są zwykle pobierane z pamięci wbudowanej w układ, którą użytkownik musi podzielić na regiony o różnych rozmiarach słów, zgodnie z potrzebami. Małe typy danych mogą być przechowywane w większej pamięci, po prostu marnując dodatkową przestrzeń. System, który nie korzysta z 40-bitowej rozszerzonej pamięci zmiennoprzecinkowej, może podzielić pamięć wewnętrzną na dwie sekcje, 48-bitową dla kodu i 32-bitową dla wszystkiego innego. Większość instrukcji procesora związanych z pamięcią nie ma dostępu do wszystkich bitów 48-bitowej pamięci, ale do tego celu służy specjalny 48-bitowy rejestr. Dostęp do specjalnego rejestru 48-bitowego można uzyskać jako parę mniejszych rejestrów, umożliwiając ruch do iz normalnych rejestrów.
Pamięć zewnętrzna może być używana z SHARC. Ta pamięć może być skonfigurowana tylko dla jednego rozmiaru. Jeśli pamięć zewnętrzna jest skonfigurowana jako słowa 32-bitowe, aby uniknąć marnotrawstwa, wówczas tylko pamięć wbudowana może być używana do wykonywania kodu i rozszerzonego zmiennoprzecinkowego. Systemy operacyjne mogą używać nakładek , aby obejść ten problem, przesyłając 48-bitowe dane do pamięci wbudowanej w razie potrzeby do wykonania. Służy do tego silnik DMA . Prawdziwe stronicowanie jest niemożliwe bez zewnętrznego MMU .
SHARC ma 32-bitową przestrzeń adresową adresowaną słowem. W zależności od rozmiaru słowa jest to 16 GB, 20 GB lub 24 GB (przy użyciu powszechnej definicji 8-bitowego „bajta”).
Instrukcje SHARC mogą zawierać 32-bitowy bezpośredni operand. Instrukcje bez tego operandu są generalnie w stanie wykonać dwie lub więcej operacji jednocześnie. asemblerze można je poprzedzić słowem „jeśli warunek ” . Istnieje wiele warunków , podobnych do wyborów zapewnianych przez rejestr flag x86 .
są dwa sloty opóźniające . Po skoku normalnie zostaną wykonane dwie instrukcje następujące po skoku.
Procesor SHARC ma wbudowaną obsługę sterowania w pętli. Można użyć do 6 poziomów, unikając potrzeby stosowania normalnych instrukcji rozgałęzień i normalnego księgowania związanego z wyjściem z pętli.
SHARC ma dwa pełne zestawy rejestrów ogólnego przeznaczenia. Kod może natychmiast przełączać się między nimi, umożliwiając szybkie przełączanie kontekstu między aplikacją a systemem operacyjnym lub między dwoma wątkami.