2009-03-28 8 views
7

W różnych językach asemblerowych MUL (x86)/MULT (mips) odnoszą się do mnożenia. To jest czarna skrzynka dla programisty. Interesuje mnie, w jaki sposób procesor dokonuje mnożenia niezależnie od architektury. Powiedzmy, że mam dwie wartości 16-bitowe w moich rejestrach i ja jestem cpu, więc muszę wprowadzić MUL, używając innych instrukcji, które mam (i, lub, xor, not, shl, shr, itp.). Co powinienem zrobić?W jaki sposób CPU wprowadza instrukcje takie jak MUL/MULT?

Odpowiedz

7

http://en.wikipedia.org/wiki/Multiplication_ALU na Wikipedii wymienia różne metody wykonywania mnożenia w obwodzie cyfrowym.

Kiedy pracowałem nad projektem dodania instrukcji SIMD do procesora podobnego do DEC Alpha w Verilog z powrotem na studia, wdrożyliśmy Wallace tree multiplier, główny powód, dla którego pracował on w ustalonej liczbie cykli i był łatwy do potokowania.

EDYCJA: Wspomniałeś używając innych bitowych instrukcji gry, na nowoczesnych procesorach multiplikacja nie byłaby mikrokodowana w ten sposób; to byłby powolny proces, a procesor zostałby ubity w benchmarki.

+0

Chociaż cpus nie nazywać własnych instrukcji ze względu na wydajność. Po prostu nie miałem innego sposobu, by wyrazić siebie, ponieważ najniższym poziomem, jaki kiedykolwiek byłem, jest asm. Dzięki za pomoc! – George

+0

Czasami tak się dzieje. x86 jest skomplikowanym ISA i zawiera bardzo dziwne instrukcje. Instrukcje te są tłumaczone na wewnętrzny program mikro-kodu. Spójrz na http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg, zobaczysz złożoną jednostkę dekodującą i sekwencer mikrokodu, który to robi – Michael

+0

Jest nawet gorszy niż na współczesnych procesorach - wydany - wykonanie zlecenia, przewidywanie rozgałęzień, hyperthreading, itp., wraz z mikrokodemem, to prawie sprawiedliwe stwierdzenie, że ISA x86 działa na maszynie wirtualnej, która jest zaimplementowana w mikrokodach i obwodach. Ale prawie nigdy nie trzeba się o to martwić ... –

3

This page pokazuje bramki logiczne dla multipleksu kombinowanego 4 * 4. Możesz stamtąd pracować.

gdzie opisują budowę 16-bitowego mnożnika z 4-bitowych multiplikatorów, z których każdy zbudowany jest z ORAZ i pełnych sumatorów. Pełna konstrukcja, układ układów i przebiegi symulacyjne.

+1

Obie linki są już martwe: / –

Powiązane problemy