Bilgisayar mimarisi öğretimi için basit 8-bit işlemci emülasyonu üzerine bir çalışma
A study on simple 8-bit processor emulation for teaching computer architecture
- Tez No: 581594
- Danışmanlar: DOÇ. DR. RAYIMBEK SULTANOV
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: bilgisayar, mimarisi, yapısı, mikroişlemci, simülatör, simülasyon, emülatör, emülasyon, bilgisayar, mimarisi, structure, microprocessor, simulator, simulation, emulator, emulation
- Yıl: 2010
- Dil: Türkçe
- Üniversite: Kırgızistan-Türkiye Manas Üniversitesi
- Enstitü: Sosyal Bilimler Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Belirtilmemiş.
- Sayfa Sayısı: 83
Özet
Bilgisayar mimarisi derslerini öğrenirken gerçek bir mikroişlemcinin mimarisini, o işlemcinin makine dili komutlarını ve o işlemciyi çevirme dilinde(assembly language) programlayarak öğrenmek önemlidir. Öğrenciler, makine dili modellemesi ile, bir donanımı kurup onun emülasyonunu gerçekleştirdikleri zaman daha iyi öğrenirler. Multimedia Logic (MML) grafiksel bilgisayar mimarisi, uygun G/Ç desteği sağlayarak bilgisayar tasarımı ve emülasyonuna olanak sağlayan yazılımlardan biridir. Ancak MML üzerine kurulan emülatörler, MML ye bağımlı kalmaktadır. Bu çalışmada 8-bitli basit bir mikro işlemci emülatörü ve bu emülatörün assembly dili tasarımı yapılmıştır. MML den bağımsız olması için de emülatör C++ dilinde kodlanmıştır. Çalışmada yaygın olarak kullanılmış başarılı bir ürün olması, basitliği ve kolay anlaşılır olması nedeniyle Motorola 6800 işlemcisini komutları örnek alınmıştır. En sık kullanılan makine dili komutları, akümülatör yazmacına değer yükleyen ve akümülatördeki değerleri işleyen (toplama, belleğe saklama gibi) komutlardır. Bu tezde tasarlanan işlemcinin bir adet 8-bit akümülatörü (“A”), bir adet 16 bit indeks yazmacı (IX), ve 16-bit program sayacı (PC) vardır. Akümülatör komutları: LDA –“A”akümülatörüne bir değer yükle STA -“A”akümülatörünün değerini belleğe kopyala ADA veya Diğer önemli komut kümesi program akışını dallandırma (“branch”) komutlarıdır. Bu komutlarda“göreceli”adresleme kullanmakta olup“-128”ile“+127”arasında bir değeri program sayacı (PC) yazmacına ekleyerek program kontrolünü elde edilen bu yeni adresteki komutu bir sonraki komut olarak çalıştıracak şekilde değiştirmek mümkündür. Böylece değişik koşullar altında programın değişik kısımlarının çalıştırılması ve farklı işlem yapılması gerçekleştirilmektedir. Bu komutların yeterli işlevselliği sağlayacak küçük bir alt kümesi bu çalışmada gerçekleştirilen emülatör tarafından tanınmakta ve emüle edilmektedir, Bu komutlar aşağıda verilmiştir. Dallanma komutları: BRZ Eğer“sıfır”ise BEQ Eğer“eşit”ise BLT Eğer“küçüktür”sıfır ise BGT Eğer“büyüktür”sıfır ise BNE Eğer“eşit değil”ise Aritmetik ve mantık kaydırma komutları akümülatörün içindeki değeri sola veya kaydırma ve döndürme işlemlerinin gerçekleştirmek için kullanılırlar. Bu çalışmadaki emülatör aşağıdaki kaydırma ve döndürme komutlarını gerçekleştirebilmektedir. Kaydırma ve döndürme komutları: ASL Aritmetik sola kaydır ASR Aritmetik sağa kaydır LSR Mantıksal sağa kaydır ROR Sağa döndür ROL Sola döndür Diğer bir önemli komut kümesi de STATUS (durum) yazmacında bulunan C (carry/elde), Z (zero/sıfır), N (negatif) gibi bayrak değerlerini değiştiren komutlardır. SEC C = 1 CLC C = 0 SEZ Z = 1 CLZ Z = 0 SEN N = 1 CLN N = 0 İşleyiş ve veri tanımlama komutları:“ORG”: programın bellekte başlangıç adresini vermektedir.“DB”DEFINE BYTE: Bellekte önceden tanımlanmış değerlerin yerleştirilmesine izin vermektedir.“END”: Programın çalışmasını sona erdirmektedir. Emülatörü test etmek için bazı deneme uygulamaları yapılmış ve LDA, STA, ADD, BRA, BNE, ASL, ASR gibi temel komutların doğru şekilde çalıştığı görülmüştür. Geliştirilen emülatör C++ dilinde kodlanmıştır. Bu sayede temel foksiyonlar C++ dilinde kodlandığı için yeni bir mikro işlemci mimarisi ve/veya makine dili tasarlanarak kolay bir şekilde emülatörün içine eklenebilecektir.
Özet (Çeviri)
In teaching computer architecture courses it is important to learn a real microprocessor, its architecture and the associated machine language instructions and assembly language programming using that microprocessor. Students learn better when they actually build (without adding the complexity of hardware details) and emulate hardware using machine language modeling and emulation. An example of this is the Multimedia Logic (MML) which provides a graphical computer architecture, convenient I/O support and enables building and emulating computers. But emulator designs built on MML, become dependant on MML. In this thesis a simple 8-bit microprocessor emulating software and associated assembly language has been designed. And to make it independent from MLL, it is coded in C++. The Motorola 6800 microprocessor architecture and machine language commands have been taken as examples because of their simplicity and easily understandable nature. The most frequently used machine language commands are those that load values and manipulate (e.g., adding, storing to memory) values in working (accumulator) registers. The microprocessor designed in this thesis has one 8-bit accumulator (A), one 16-bit indexing register (IX), and one 16-bit program counter (PC) register. Accumulator commands LDA : load a value to the accumulator register, A. The value can be an“immediate”parameter (in the next byte in memory following the machine language command), or a memory address (direct, extended, or indexed mode) given as parameter to the command. STA : Save the value of“A”accumulator at the given memory address. The address can be either direct mode (1 byte in the memory addresses 0..255), extended mode, or indexed mode. ADA : Add the given value to the contents of accumulator“A”. Branching commands The second set of important commands are branching commands used for modifying the execution sequence (normally in increasing order of memory addresses) of program commands. The branching commands use“relative addressing”where a value between - 128 and +127 is added to the current PC register value to obtain the memory address of the next machine language command and store this value in PC register to point at the next command to be executed. This ability to change program flow allows different parts of the code to be executed under different conditions and achieve different operations to be accomplished. A smaller subset of these commands, sufficient to establish functionality, has been implemented in this work and are recognized and executed by the developed emulator program. These commands are given below: BRZ branch if zero BEQ branch if equal BLT branch if less than BGT branch if greater than BNE branch if not equal to Arithmetic and logical shitfting commands are used for shifting or rotating the value in accumulator register left or right. The emulator developed in this thesis recognizes and can execute the following shift and rotate commands. Shifting and rotation commands ASL arithmetic shift left ASR arithmetic shift right LSR logical shift right ROR rotate right ROL rotate right Another important set of commands modify the flags in the STATUS register, some of which are; C(carry), Z(zero), and N(negative) flags. SEC C = 1 CLC C = 0 SEN N = 1 SEZ Z = 1 CLZ Z = 0 CLN N = 0 Program control and data definition commands are also provided for controlling the placement of program data and generated machine language code in memory: ORG(origin): this command sets the current memory address to be used by the assembler. DB(DEFINE BYTE): This command allows a predefined value to be inserted into the memory by the assembler, before the program execution starts. END: This program terminates the operation of the assempler. In order to test the emulator several small assembly language application code have been written using LDA, STA, ADD, BRA, BNE, ASL, and ASR commands and they have been verified to be correctly emulated by the developed program. The developed emulator is written in C++ language. The use of C++ also makes it possible to add (relatively easily) newly designed microprocesor architectures and/or new machine languages into the program developed in this thesis.
Benzer Tezler
- Prediction of COVID 19 disease using chest X-ray images based on deep learning
Derin öğrenmeye dayalı göğüs röntgen görüntüleri kullanarak COVID 19 hastalığının tahmini
ISMAEL ABDULLAH MOHAMMED AL-RAWE
Yüksek Lisans
İngilizce
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolGazi ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. ADEM TEKEREK
- Derin öğrenme ve büyük veri analitiği yöntemleriKullanarak Covid-19 yayılımının ileriye dönük tahmini
Forecasting the spread of covid-19 using deep learning and big data analytics methods
CYLAS KIGANDA
Yüksek Lisans
İngilizce
2023
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolGazi ÜniversitesiBilgisayar Bilimleri Ana Bilim Dalı
PROF. DR. MUHAMMET ALİ AKCAYOL
- Yeni Cami'nin akustik açıdan performans değerlendirmesi
Evaluation of the acoustical performance of the New Mosque
EVREN YILDIRIM
Yüksek Lisans
Türkçe
2003
Mimarlıkİstanbul Teknik ÜniversitesiMimarlık Ana Bilim Dalı
PROF. DR. SEVTAP YILMAZ DEMİRKALE
- Fake news classification using machine learning and deep learning approaches
Makine öğrenimi ve derin öğrenme yaklaşımlarını kullanarak sahte haber sınıflandırması
SAJA ABDULHALEEM MAHMOOD AL-OBAIDI
Yüksek Lisans
İngilizce
2023
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolGazi ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ TUBA ÇAĞLIKANTAR
- Ontoloji tabanlı etkinlik ve öğrenme nesnesi paylaşım sistemi
Ontology based activity and learning object sharing system
HASAN TÜRKSOY
Yüksek Lisans
Türkçe
2007
Bilim ve TeknolojiHacettepe ÜniversitesiBilgisayar ve Öğretim Teknolojileri Eğitimi Ana Bilim Dalı
PROF.DR. PETEK AŞKAR