Hataya bağışıklı mikroişlemci tasarımı
Fault tolerant microprocessor design
Yazar: BUSE USTAOĞLU
Danışman: PROF. DR. MÜŞTAK ERHAN YALÇIN
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı / Elektronik Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering
Dizin: Mikroişlemciler = Microprocessors

Özet:
Bu tez kapsamında gömülü mikroişlemcilerin içerisinde meydana gelebilecek hatalara
rağmen işlevine devam edebilmesi için devreyi güçlendirmeye yönelik tasarım
yapılmıştır. Mikroişlemciler birçok güvenliği kritik gömülü sistem uygulamalarında
kullanılmaktadır ve sistemlerde bir beyin görevi gördüğü için düzgün bir şekilde
çalışması kritik önem taşımaktadır. Transistör boyutlarının küçültülmesi devrelerin
hatalara daha yakın olmasına yol açmakta ve bu sorun sistemlerde güvenilirlik
problemini beraberinde getirmektedir. Üretim hataları, yıpranma gibi etkenlerin
yanısıra elemanların faydalı çalşma ömrü içerisinde radyasyon gibi çevresel etkilerin
yol açtığı tek durum etkileri kombinezonsal devrelerdeki lojik hatalar veya bellek
hücrelerindeki verilerin değişmesine sebep olan bit bozumaları gibi geçici hatalara ve
artan oranla olu¸san geçici etkiler sonucu kalıcı hata olu¸sumlarına sebep olmaktadır. Bu
sebeplerden dolayı hataya bağışıklı tasarım göz ardı edilemeyecek derecede gerekli ve
önemli olmaktadır.
Bu çalışmada ilk olarak bir devrenin hatalar varken davranışının gözlemlenebilmesi
için bir sistem gerçeklenmi¸stir. Öncelikle hata üretim devresi tasarlanmıştır. Ardından
test edilecek tasarım olarak 8-bitlik İndirgenmiş Komut Takımı Bilgisayarı (Reduced
Instruction Set Computing-RISC) mimarisi ile tasarlanmış Natalius mikroişlemcisi
seçilmiştir. Gerekli ara birimler oluşturulup bağlantılar yapılmış ve sonuçlar elde
edilerek grafikler yorumlanmıştır.
Kaydedici dosyası, mikroişlemci içerisinde sıklıkla erişilen kısımdır. Aritmetik
ve mantıksal işlemler bu birim üzerinden yapılır ve içerisine gelebilecek bir
hatanın tüm sistemi etkilemesi olasıdır. Bu nedenle mikroişlemcilerdeki kaydedici
dosyalarını korumak için literatürde yer alan hataya karşı bağışıklık kazandırma
yöntemleri incelenmiştir. Bu yöntemlerden donanım yedeklemesi sınıfına giren üçlü
modül çoğullama yönteminin çoğunluk oylama devresinden ve bilgi yedeklemesi
sınıfına giren matris kodlarının koruma bitleri hesaplarından faydalanılarak çoklu
bit bozulmalarına karşı veriyi koruyan kodseti adında yeni bir yöntem önerilmi¸stir.
TMR yöntemi 3 adet eş modül bulundurur ve çıkı¸sa ço˘gunluk oylamasına göre
karar verilir. Herhangi bir yere gelen hata maskelenir. Matris kodları ise hata
tespit etme ve düzeltme kapasitesine sahiptir ve bu amaçla eşlik ve kontrol bitleri
hesaplanır. Tasarımdaki temel fikir, kaydedici bitlerine ardı¸sık olarak gelen hatalara
karşı bir yöntem geli¸stirmektir. Bu nedenle veri kodsetlerine ayrılır. Ayrıca rastgele
bitlere gelen hatalara karşı da veri korunabilmektedir. Eşlik ve kontrol bitlerine
gelen hataların orjinal veriyi yanlış düzeltmesini engellemek için oylama mekanizması
geliştirilmiştir. 2, 4 veya 8 biti koruyabilecek şekilde ayarlanabilir olması nedeniyle
kullanışlı bir yöntem olmaktadır.
Bu yöntemi mikroi¸slemci içerisinde uygulayabilmek için MIPS mimarisi ile 32-bitlik
hem tek çevrim hem de iş hatlı mikroişlemci tasarımı yapılmıştır. Mikroişlemci
üzerinde uygulama kodu çalı¸stırmak için Gelişmiş Şifreleme Standartı algoritması
seçilmiş ve şifreleme modülü eklenerek komut geni¸sletmesi yapılmıştır. Kaydedici
dosyasının hataya karşı bağışıklık kazandırma yöntemleriyle tasarımı yapılmıştır. Hata
üretim devresi kullanılarak farklı durumlarda simülasyon çıktıları alınmıştır.
Tasarımlar TSMC 90 nm teknolojisinin standart kütüphanesi ile Cadence firmasının
RTL Compiler aracı kullanılarak sentezlenip yerle¸simleri yapılmış alan, maksimum
çalı¸sma frekansı bilgileri verilmiştir. Ayrıca güvenilirlik analizleri yapılarak sonuçlar
karşılaştırılmıştır.

Abstract:
In this thesis, a fault tolerant microprocessor has been designed in order to operating
correctly against faults. Microprocessors are used in safety-critical embedded system
applications and they are main part of the system and their correct functionality is
essential. With transistor scaling, circuits are more susceptible to errors and it leads to
reliability concern in the systems. Besides the manufacture faults, wear-out factors,
single event effects (SEEs), that occur because of the environmental factors such
as radiation effects, cause from logical errors in combinational circuits, to upsets
changing data, to destructive hard errors with increasing soft error rate.
SEEs causes single event upsets (SEUs) which is bit-flips or changing the state on
flip-flops, memory cells due to the impact of particles, such as neutrons and alpha
particles. Although SEU is the major concern for some critical applications, multiple
bit upsets (MBU) are also becoming important problems in designing memories due to
the fact that the probability of MBU generation is increasing in modern technologies.
Due to the these reasons, fault tolerant design is so necessary and crucial.
Fault tolerance is the ability of a system to continue performing its intended function
in spite of faults. In a broad sense, fault tolerance is associated with reliability.
Redundancy is redundancy is the provision of functional capabilities that would be
unnecessary in a fault-free environment. This can be a replicated hardware component,
an additional check bit attached to a string of digital data, or a few lines of program
code verifying the correctness of the program results.
Hardware redundancy is achieved by providing two or more physical instances of a
hardware component. Many hardware fault-tolerance techniques have been developed
and used in practice in critical applications ranging from telephone exchanges to space
missions. Especially in the embedded systems domain, it brings a number of penalties:
increase in weight, size, power consumption, as well as time to design, fabricate, and
test.
The basic form of redundancy is duplication with comparison (DWC). Two identical
modules perform the same computation in parallel. The results of the computation are
compared using a comparator. If the results disagree, an error signal is generated. A
duplication with comparison scheme can detect only one module fault. After the fault
is detected, no actions are taken by the system to return back to the operational state.
The most common form of passive hardware redundancy is triple modular redundancy
(TMR). There are 3 identical modules in TMR and output is decided based on the
majority voting. If one of the modules fails, the majority voter will mask the fault
by recognizing as correct the result of the remaining two fault-free modules. A TMR
system can mask only one module fault. A failure in either of the remaining modules
would cause the voter to produce an erroneous result.
Information redundancy is redundancy into the data. Because, errors in data may
occur when the data are being transferred from one unit to another, from one system
to another, or even while the data are stored in a memory unit. The most common
form of information redundancy is error detection and correction (EDAC), which adds
check bits to the data, allowing us to verify the correctness of the data before using it
and, in some cases, even allowing the correction of the erroneous data bits with lower
overhead.
The simplest type of EDAC is a Single Parity Check which computes the exclusive-or
(XOR) of the k data bits, and appends this single parity bit to the data block to form the
overall coded block. This can only detect errors. Single Error Correction (SEC) codes
which can correct a single bit error in a block are commonly used to protect memories
and circuits when error detection is not sufficient.
There are different types of SEC codes, a famous example being the class of Hamming
codes. A Single Error Correction Double Error Detection (SEC-DED) code can be
constructed from a Hamming code by adding a parity bit; this parity bit is used to
identify single errors and avoid miscorrection (this is often referred to as an extended
Hamming code. Matrix codes, combines Hamming and Parity codes to assure the
improvement of reliability and yield of the memory chips in the presence of high
defects and MBUs.
Fault injection is a key to evaluating fault-tolerant techniques. Those approaches
can be divided into hardware based fault injection and software based fault injection.
Furthermore, software based fault injection can be classified as software-implemented
fault injections and simulation based fault injections. One type of the simulation based
fault injections, Verilog HDL,with the high observability and controllability can be
obtained. Selection of open source microprocessor ,design of fault injection circuit,
modification of the microprocessor writing an application code and analyzing the
results are the steps of the fault injection to the microprocessor.
First of all in order to observe the behaviour of a circuit when faults exist, a fault
injection circuit has been designed. Natalius microprocessor, which is 8-bit Reduced
Instruction Set Computer (RISC) processor, has been chosen as design under test.
Necessary interfaces have been formed and all the units have been connected to each
other. Then, results have been obtained.
Register file is accessed frequently by the microprocessor. Arithmetic and logic
operations are performed on register values. Therefore a fault, which occurs inside
it, can effect whole system. That's why, fault tolerant techniques to protect register
files have been examined in the literature. A new method, called as codeset, has been
proposed by making use of the majority voter circuit of TMR, which is one of hardware
redundancy method, and calculations of protection bits of matrix code. The key idea of
the design is developing a method in order to protect register file against burst errors.
So, codesets have been created. Moreover, random faults in a register can be corrected.
A voting mechanism has been developed and wrong correction of the original data has
been prevented because of the faults that occurs parity or check bits. This technique is
cost effective and configurable because codesets can be created to protect data against
up to 2, 4 or 8-bit adjacent or random errors in any register.
In order to use the method in microprocessor, both 32-bit single cycle and pipeline
microprocessors have been designed with MIPS architecture. One of the most safety
critical usage of microprocessors is cryptography. Cryptographic algorithms can
be implemented in MIPS easily. AES (Advanced Encryption Standard) is a very
widespread symmetric-cryptography algorithm for encrypting data. FPGAs (Field
Programmable Gate Arrays) and ASICs (Application Specific Integrated Circuits)
provide suitable platforms for implementations of the algorithm. Therefore, Advanced
Encryption Standard (AES) algorithm has been chosen and crypto module has been
integrated into MIPS microprocessor so as to create an application platform. Register
files have been designed with fault tolerant techniques. By using fault injection circuit,
simulations have been performed in different situations.
Reliability is is the probability of a device performing its purpose adequately for the
period of time intended under the operating conditions encountered. It increases with
the fault tolerant design approach. In this study, reliability values have been calculated
for the fault tolerant techniques.
Designs have been synthesized by using Cadence RTL Compiler on TSMC 90nm
process. Area, maximum frequency results have been given. Furthermore, reliability
analysis have been made and results have been compared.