İlk mikroişlemciler nasıl programlandı?


44

Bu sadece bana bir işletim sistemi yazıyorsanız o zaman ne üzerine yazıyorsun? Bunu, 1980'den itibaren bir mikroişlemci temel kitabı okurken ve bu soru kafama attığında soruyorum:

İlk mikroişlemci yongası nasıl programlandı?

Cevap açık olabilir ama bu beni rahatsız ediyor.


6
Kendi çalışmamı kurmama izin verilirse, "Linux çekirdeği kendisini nasıl derleyebilir?" Cevabımı görün. Yığın Taşması . Cevap, genel prensibi anlayana kadar açık değildir, bu noktada "Eh, elbette ..."
diyeceksiniz

@dmckee Ama yine de ne yapılacağını nasıl bildiğini sorusuna cevap vermiyor :) bilgisayara anahtarları ne yapacağını kim söyledi? Biraz daha detay istiyorum.
Dean

4
Öyleyse asıl soru ilk çipin önyükleme sırasını tasarlamakla mı ilgili? Bu kesinlikle bu siteye ait bir sorudur , ancak bileşenlerden inşa edilmiş bir dijital mantık tasarlamak gibi bir şeydir… bilinen bir durumda başlamasını sağlayın, sonra yararlı şeyler yapacak girdileri besleyin. Ben bu konuda titrek olduğum için, ayrıntılı cevap vermek için diğer bırakacağım ama do ilk bilgisayarlar sağ, vakumlu tüplerde uygulanmıştır biliyoruz? Ardından, her biri ilk mikro çipten önce, bireysel transistörlerde bir nesil vardı. Mühendisler ne yaptıklarını zaten biliyorlardı.
dmckee

1
Elbette mikro olmayan işlemcilerde.
user253751

Yanıtlar:


56

Sorunuzu tam anlamıyla ele alacağım ve genel olarak bilgisayarları değil çoğunlukla mikroişlemcileri tartışacağım.

Tüm bilgisayarlarda bir tür makine kodu vardır. Bir talimat, bir opcode ve bir veya daha fazla operanddan oluşur. Örneğin, Intel 4004 (ilk mikroişlemci) için ADD talimatı 1000RRRR olarak kodlandı; burada 1000, ADD için opcode ve RRRR bir kayıt numarasını temsil ediyordu.

İlk bilgisayar programları elle yazılmış ve makine dilinde bir program oluşturmak için 1'leri ve 0'ları elle kodlamıştır. Bu daha sonra çip içine programlanır. İlk mikroişlemciler ROM (Salt Okunur Bellek); bu daha sonra EPROM (UV ışığı ile silinen Silinebilir Programlanabilir ROM) ile değiştirildi; şimdi programlar genellikle EEPROM ( "Elektriksel ... - EPROM" , yonga üzerinde silinebilir) veya özellikle Flash belleğe programlanır.

Çoğu mikroişlemci artık programları RAM'den çalıştırabilir (bu, mikrodenetleyiciler hariç her şey için oldukça standart), ancak programı ilk başta RAM'e yüklemenin bir yolu olmalı. Joby Taffey'in cevabında belirttiği gibi, bu bir Intel 8080 (4004 ve 8008'i izleyen) tarafından desteklenen Altair 8080 için geçiş anahtarları ile yapıldı. Bilgisayarınızda, bilgisayarı başlatmak ve işletim sistemini RAM'e yüklemek için kullanılan BIOS adı verilen bir miktar ROM vardır .

Makine dili çok yorucu oluyor; bu nedenle, anımsatıcı bir montajcı dili alan ve genellikle komut başına bir montaj kodu satırı olan makine koduna çeviren montaj programları geliştirildi. Yani 10000001 yerine, bir kişi ADD R1 yazacaktır.

Ancak ilk montajcının makine kodunda yazılması gerekiyordu. Daha sonra kendi montajcı kodunda yeniden yazılabilir ve makine dili sürümü ilk defa bir araya getirilirken kullanılır. Bundan sonra, program kendini toplayabilir. Buna önyükleme adı verilir ve derleyicilerle de yapılır; bunlar genellikle ilk olarak birleştirici (veya başka bir üst düzey dil) ile yazılır ve daha sonra kendi dilinde yeniden yazılır ve derleyici kendisini derleyene kadar orijinal derleyici ile derlenir.

İlk mikroişlemci, ana bilgisayarların ve mini bilgisayarların etrafından çok uzun bir süre sonra geliştirildiğinden ve 4004 zaten bir montajcı çalıştırmaya gerçekten uygun olmadığından, Intel muhtemelen büyük bilgisayarlarından birinde çalışan bir montajcı yazdı ve montaj kodunu tercüme etti. 4004, ROM'lara programlanabilecek ikili bir görüntü haline gelir. Bir kez daha, bu derleyicileri yeni bir platforma ( çapraz derleme adı verilen ) taşımak için kullanılan yaygın bir tekniktir .



1
Ve eğer başka bir bilgisayar olmadan (bir beyniniz dışında) bir mikroişlemciyi gerçekten programlamak istiyorsanız, bunu doğrudan programa besleyen bir devre kurarak bunu yapabilirsiniz. Eğer jtag üzerinden programlandıysa, cihazı programlamak için gereken jtag komutlarını taklit etmek için anahtarları çevirebilirsiniz. Harici bir ram kullandıysa, komutların bitlerini temsil etmek için yüksek veya düşük bağlanmış çok sayıda demultiplexör ve yüksek direnç dizileri kullanabilirsiniz (ve donanımınız yavaş olacağından muhtemelen düşük bir saat hızı kullanın).
nategoose

3
@tyblu: Çok sigortalı PROM'ların EPROM'ları önceden belirlediğinden eminim. ROM'un en basit şekli, esasen seçici bir şekilde yerleştirilmiş bir diyot dizilimidir (ilk günlerde, diyotlar bir bit polaritesini temsil etmek için bir ızgaraya kelimenin tam anlamıyla lehimlenecekti; diğer polariteyi temsil eden eksik bir diyot). Bir sigorta-PROM bir çip üzerine bir diyot dizisi koyar, ancak kesişme noktalarındaki diyotlardan çok daha güçlü olan sıra transistörlerine sahiptir. Biri adres tellerini ayarlayarak ve ardından çıkarmak istediğiniz diyotlara bağlı veri tellerini gerçekten sert bir şekilde vurarak diyotları çıkartabilir.
supercat

@tyblu: Sigorta PROM'larının, penceresiz paketlerde EPROM yongaları olan modern OTPROM'lar gibi elektriksel olarak hiçbir şey olmadığını unutmayın. EPROM / OTP cihazları belli transistörlerin kapılarını elektriksel olarak yükleyerek (esasen süresiz olarak şarj etmek için yeterli kapasitansa ve yeterince sızıntıya sahip değildir) programlanır. Buna karşılık, sigorta-PROM çipleri, istenmeyen diyotlara olan bağlantıları fiziksel olarak yok ederek programlanır.
supercat

1
ayrık transistörlerin günlerinden bu 'ROM'u kontrol edin: en.wikipedia.org/wiki/Core_rope_memory
JustJeff

23

Başlangıçta, programlar kağıda yazılmıştır ve daha sonra bilgisayarın hangi giriş yöntemine sahip olduğuna aktarılmıştır. Bu, ilk bilgisayardaki düğmelerden, anahtarlardan ve atlatma kablolarından, kart deliklerine, tuş takımlarına / kartlarına geçti.

Aşağıdaki şekilde, günümüzdeki gerçek programcıların ne kullandığı gösterilmektedir:


10
Kahretsin, emacs ..
tyblu

6
Programcıları programlarım. (Ve ben bu programcılar ben programcı programcı programcıları programlarım.)
Mateen Ulhaq

4
Kendi programcılarımı yapıyorum.
W5VO

16

Mikrolar ilk çıktığında, ana bilgisayarlara ve minislere çapraz montajcıları ve derleyicileri yazdık, daha sonra onları 8 bitlik bir donanıma çizdik, insanlar yeterince yerel depoya sahip olana kadar mikroskoplar üzerinde derleyici / montajcıları rahatsız etmediler. yararlı kılmak


14

İlk salt okunur belleğin bir biçimi, adresin bir satırı (düşük çekerek) seçeceği ve sütunların verileri temsil ettiği bir ızgaraydı. Her sütun bir çekişe sahip olacak ve her kavşakta bir "sıfır" ı temsil etmek için lehimlenen bir diyot bulunacaktı veya bir "bir" ı temsil edecek diyotu yok [istenirse, bit seviyelerinin tersine çevrilebildiği durumlarda gerekli diyot sayısı]. İstenilen herhangi bir bit kalıbı, uygun diyotlarda lehimleme ile "programlanabilir".

Bu tasarım entegre devre dünyasına bir sigorta-PROM şeklinde getirildi. Temel olarak bir sigorta PROM'u, tüm diyotların doldurulması dışında ve her diyotun seri halinde zayıf bir sigortası olması haricinde, bir çip üzerine inşa edilmiş, yukarıdaki gibi bir devre idi. Gönderildiği gibi, bir PROM tüm yerlerde "0" yazardı. Bununla birlikte, bir kişi uygun adres seçilerek ve uygun "yüksek" sert veri satırlarını sürerek diyotları seçici olarak çıkarabilir [not: Her bitin bir diyot yerine kendi transistörüne sahip olabileceğini düşünüyorum, ancak prensip aynıdır].

Sigorta programlı PROM'lar, iç kondansatörlere yükler yerleştirerek bitleri depolayan yarı iletken anılarla başarıldı. Bu tür anılar sadece sigorta PROM'larından daha küçük değil, UV-şeffaf paketlerde bulunurlarsa silinebilir ve tekrar kullanılabilirler. “Tek seferlik programlanabilir” olarak adlandırılan hatıraların bile neredeyse her zaman aynı tasarımı kullandığını ancak UV-opak paketlerinde bulunduğunu unutmayın.

büyük diyot matris işaret eden iki adam 1950 MIT Kasırga Bilgisayarının diyot-matris kontrol mağazası

minik SMD transistörlü transistör-matris transistör-matris kontrol deposu 2005 MT15 CPU


Umarım görevine yaptığım ufak çimdik umrunda değil
davidcary

7

OP'nin gerçek sorusuna hitap ettiğinden emin değilim, ki "Bilgisayar nasıl başlayacağını nasıl biliyor?" Gibi görünüyor. , bu yüzden onunla bir çatlak alacağım.

Bir benzetmeyle başlayın. "Bir transistör nasıl başlanacağını nasıl biliyor?" Tabii ki değil, sadece fiziğe göre çalışır ve mühendis bilinen bir durumda başlayacak şekilde devreyi kurar.

Bilgisayarlar nasıl başlatılacağını biliyorlar çünkü bunlar devrelerdir (elbette çok karmaşık) ve belirli bir durumda başlayacak şekilde inşa edilmişlerdir. Bu modern bir makinede, ana veri yolunun adres alanının bir kısmını anakart üzerindeki bir ROM'a kullanıcı olarak düşük bellek (bir BIOS ile yakılmış olan ROM) olarak yeniden eşleştirdiği bir durum olabilir. Birinci nesil bir makinede ilk durum CPU durdurulmuş, program sıfıra düşmüş ve hafıza geçiş alt sistemi aktif olmuş olabilir.


6

İşletim sistemi, doğrudan işlemcide çalışan bir bilgisayar programıdır. Makine talimatlarına göre derlenebilecek veya birleştirilebilecek herhangi bir dilde yazılabilir. Montaj ve C ortak seçimlerdir.

Kod, işlemcilere bir mağazadan bir seferde tek bir komut yüklenir - bir ROM veya RAM.

Programlanabilir ilk işlemci olan Z3 , elektromekanik rölelerden yapılmıştır ve delinmiş filmden gelen talimatları okur.

Altair 8800, ilk kişisel bilgisayar, geçiş anahtarları ile programlandı.

Bir işlemcinin dijital mantıktan nasıl oluşturulduğunu öğrenmek için, https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners

Bir tarih için, http://en.wikipedia.org/wiki/History_of_computing_hardware adresine bakın.


5

İşte gerçekten eski bilgisayarlar hakkında biraz:

Bildiğim kadarıyla, o zamanlar, onları programlamak için kullanılan büyük bir bilgisayar ön paneliniz vardı. Temel olarak, bu bilgisayarlardaki her bir bellek hücresi anahtarlara bağlandı. Belleği çalıştırır ve ardından her hücrede veri ayarlamak için anahtarları kullanırsınız. Bu yolla, programı yavaş yavaş bilgisayarın hafızasına girersiniz. Ardından programın başlangıç ​​noktasını ayarlayıp yürütmeye başladınız.

Teknoloji ilerledikçe, önyükleyici olarak adlandırılan programlar geliştirildi. Bunlar, amacı bilgisayar belleğinden başka bir program başlatmak olan kısa programlardır. Programları yavaş yavaş girme problemi (ve daha sonra sekizli ve daha sonraki onaltılık sayıları kullanarak birden fazla bit), çok yavaş olması ve operatörün programı yüklerken hata yapma ihtimalinin büyük olmasıydı. Bu nedenle, kısa süreli programlar bilgisayarın belleğinde depolanan daha büyük programları yüklemek için kullanılacaktır. Zaman geçtikçe, el ile girilmesi gereken kodun bir kısmı azaldı ve modern bilgisayarlarda genellikle bir tür ROM veya hatta flash bellekte yazılmış önyükleyicilere sahibiz.


4
Ön paneldeki makinelerde, önceki S-100 sistemleri gibi, anahtarlar sistem veriyolunun kontrolünü elinize almanıza izin verir. Bir anahtar işlemciyi askıya almanıza izin verir. İşlemci askıya alındığında, daha sonra manuel olarak adres yoluna bir adres (anahtarlar aracılığıyla) koyabilir, veri yoluna veri (daha fazla anahtar) koyabilir ve ardından yol üzerinde bir yazma döngüsüne (başka bir anahtar) neden olabilir ya da 8 ayrı LED'e veri geri çekmek ve ikili bilgiyi okumak, vb. için bir okuma döngüsü. Bunu yaparak, yeterli makine kodunu RAM'de saklayabilir, işlemciyi askıya alabilir ve oradan gidebilirsiniz.
JustJeff

4

Birkaç yıl önce 4 basamaklı yedi segmentli bir ekrana ve onaltılık tuş takımına sahip bir mikroişlemci programcısına rastladım. Bunun gemide bir mikrodenetleyici bulunmadığından ve bir kerede doğrudan bir bayt makine kodu girmenize izin verdiğinden eminim.

Bu sayede, Op kodlarının bir listesini el ile tek tek derlemeniz ve bunları çip içine eklemenizi sağlar.

Hala onları alabilir misin, hiçbir fikrim yok, ama sanırım mikrodenetleyiciler nispeten yeniyken benzer bir şeyin kullanıldığını tahmin ediyorum.


1
Her ikisi de bir mikroişlemciyi (MOS 6502 ve RCA [CD] 1802) içeren muhtemelen KIM-1 veya Cosmac ELF'ye benziyor. KIM: oldcomputers.net/kim1.html ELF: cosmacelf.com
mctylr 16:11

Muhtemelen mctylr'ın söylediği gibi bir şeydi. Bu tür makinelerde, ROM'da genellikle küçük bir 'monitör' programı vardı. Eğer tuş takımı ile bayt girdiğinde, o vb LED'ler güncellenmesi, anahtarları okuma belleği değiştirmek aslında 6502 (veya 8.085 veya ne olursa olsun) idi
JustJeff

1

İlk mikroişlemciler, mikroişlemcilere dayanmayan mevcut bilgisayarların yardımıyla programlanmış olacaktı. İlk CPU tek bir yongada üretilmeden önce, mikroişlemcilerden ziyade ayrı bileşenlerden yapılmış gelişmiş bilgisayar mimarileri vardı. IBM 360'a bir göz atın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.