Ağ Çalışma Grubu
Yorum Talebi #401
NIC #11923
Kategori: D.6
Günceller: RFC #387
Geçersiz Kılar: Yok
Jim Hansen
Gelişmiş Hesaplama Merkezi
Illinois Üniversitesi
23 Ekim 1972
NGP-0 Koordinatlarının Aygıta Özgü
Koordinatlara Dönüştürülmesi
NGP-0 koordinatlarının kayan noktalı PDP-10 koordinatlarına dönüştürülmesi RFC #387’de tartışılmıştır. Ancak genel olarak, NGP koordinatlarının kayan noktalı koordinatlara dönüştürülmesi istenmeyen bir durumdur; çünkü gerçek aygıtlar tamsayı adresleme gerektirir. Bu amaçla, NGP koordinatlarını, 2’nin tümleyeni aritmetiği kullanan bir makinede aygıt ekranının en büyük adresi olan M ile sıfır aralığındaki tamsayı koordinatlara dönüştürmeye yönelik bir yöntem tanımlanmaktadır. Bununla birlikte, bu algoritmanın bire bir tümleyen ya da işaret-büyüklük aritmetiği kullanan makinelerde çalışacak şekilde değiştirilmesi zor olmayacaktır.
Öncelikle NGP koordinat biçimini ele alalım:
+--+-----------+
| | n |
+--+-----------+
s ^ KESİR
i
g
n
Burada işaret biti koordinatın en anlamlı bitini kaplar ve bunu sayısal bilgi bitleri izler (NGP’nin ilk uygulaması N = 15 gerektirir). Negatif sayılar 2’nin tümleyeni ile temsil edilir. Aygıt koordinatlarına dönüştürme şu şekilde gerçekleştirilir:
D = S * f + S
Burada:
- D => tamsayı aygıt koordinatı
- S => ölçekleme çarpanı (tipik olarak M/2)
- f => NGP kesirli koordinatı
Bunu şu şekilde yeniden yazalım:
n n
D = S*(2 * f)/2 + S
Şimdi S’yi iki terime ayıralım:
I
S = Q * 2
Burada Q tek bir tamsayıdır ve I bir tamsayıdır.
Şu durumda:
I n n
D = Q * 2 * (2 * f) / 2 + S
I-n n
= Q * 2 * (2 * f) + S
(2^n * f) çarpanı, f’nin işaret bitinin bilgisayar sözcüğünün üst kısmına genişletilmesiyle 2’nin tümleyeni biçiminde doğrudan temsil edilir. Q = 1 ise (birçok aygıtta olduğu gibi) göz ardı edilebilir. Q ≠ 1 ise, çoğu makinede tamsayı çarpmanın kayan nokta çarpmadan daha hızlı olduğunu düşünerek kendimizi rahatlatabiliriz. Nitekim bir PDP-10 üzerinde bu çarpma genellikle bellek erişimi olmadan gerçekleştirilebilir; çünkü Q çoğunlukla küçüktür.
Artık geriye 2^(I−n) çarpanı kalmaktadır. Bu, uygun şekilde (I−n) kadar aritmetik sola kaydırma ya da (n−I) kadar aritmetik sağa kaydırma ile gerçekleştirilebilir. Ofset çarpanı S ise artık bir tamsayı toplama işlemi kullanılarak eklenebilir.
NGP koordinatlarını tamsayı aygıt koordinatlarına dönüştürme işlemi şu şekildedir:
- Koordinatı bir yazmaca taşı ve işareti genişlet.
- Q ile tamsayı çarpma yap (gerekliyse).
- (I−n) kadar aritmetik sola kaydır.
- S’yi tamsayı toplama ile ekle.
Bu yöntem, genel olarak şu işlemlerden çok daha hızlı olacaktır:
- Koordinatı yazmaca taşı ve işareti genişlet.
- Kesirli koordinatı kayan noktaya dönüştür.
- Kayan nokta çarpma yap.
- Kayan nokta toplama yap.
- Sabit noktaya dönüştür.
Bu RFC, çevrimiçi RFC arşivlerine girmek üzere BBN Corp. tarafından Alex McKenzie’nin yönetimi altında makine tarafından okunabilir biçime dönüştürülmüştür. 1/97