When silicon chips are fabricated, defects in materials (e.g. silicon) and manuf
ID: 3828068 • Letter: W
Question
When silicon chips are fabricated, defects in materials (e.g. silicon) and manufacturing errors can result in defective circuits. A very common defect is for one wire to affect the signal in another. This is called a cross-talk fault. A special class of cross-talk fault is when a signal is connected to a wire that has a constant logical value (e.g. a power supply wire.) In this case, we have a stuck-at-0 or a stuck-at-1 fault and the affected wire always has a logical value of 0 or 1 respectively.
Registers, Source 2, bit 3
ALU, zero
Instruction memory, Address, bit 1
Design a test (by filling the PC, registers, data memory and instruction memory with some values) to detect a stuck-at-0 fault on this wire. Design a test to detect a stuck-at-1 fault on this wire. If we know the processor has a stuck-at-1 fault on this wire, is the processor still usable? To be usable, we must be able to convert any program that executes on a normal MIPS processor into a program that works on this processor. The processor is usable if every instruction “broken” by this fault can be replace with a sequence of working instructions that achieve the same effect.
Explanation / Answer
Ans::
-->To testt for a stuck--at--zeroo fault on a "wire"., we tend to need an "instruction" that puts thatt "wire" to worth|a worth|a price} "1" & includes a diferent 'result' if value on the 'wire' is stuck-at-0;
-->Bit-7 of the 'instruction_word' is just used because the 'part' of an immediatee//offset a part of 'instruction'.,
so one way to test -would be to 'execute' " ADDI $1 "., "zero", "128" that supposed to 'place' a value
of '128' into '' $1 ''. If the instruction_bit-7 is stuck at zero., '$1' will be '0' because value '128' has all
'bits' at '0' except 'bit-7'.
--> the only '' instructions '' that set thiss 'signal' to '1' are loads.
--> we will test by 'filling' the data_memory with 0's & executing a 'load_instruction' from a 'non-zero' address,
example:: lw $1, 1024(zero).
-->After this 'instruction'., the value in '$1' is meant to be '0'. If the "" MemtoReg_signal "" is stuck
at '0'., the 'value' within the registr would be '1024' ---the 'Mux' selects the '' ALU output (1024)'' rather than
value from the " memory ".
**-->The take a look at for "stuck-at-0" want Associate in Nursing 'instruction' that 'sets' the 'signal' to '1'
& the test for 'stuck-at-one' needs an -instruction that sets ' signal to zero '. Because
the signal can'nt be each '0' & '1' within the 'same_cycle', we won't test the same_signl
simultaneously for "stuck-at-zero" & "stuck-at-one" using only 'one' instruction. The test
for "stuck-at-one" is analogous to the "stuck-at-0" test:
--> we will use 'ADDI $1', 'zero', zero that is supposed to place a value of zero in $1. If "Bit-7" of the
instruction word is "stuck -at-one", the immediat_ operand becomes '128' and '$1' becomes '128'
instead of 'zero'.
--> we cannot reliably test for this fault, because all instructions that set the MemtoReg signal
to zero also set the ReadMem signal to zero. If one of these instructions is employed as a test for
MemtoReg stuck-at-1, the worth written to the destination register is “random” (whatever noise
is there at the data output of data Memory). This value might be the same as the value already
in the register, thus if the fault exists the test might not detect it.
--> It's posible to work for this 'fault', however it's very difficult.,we should find all instructions that
have '0' in this little bit of the 'offset' or immediatee 'operand' & 'replace' them with a 'sequnce' of
"“safe"” instruction.
-->For example, a load with such an offset should get replaced with an instruction
that subtracts 128 from the address_registr, then the load --with the offset 'larger' by '128' to set
"bit-7" of the offset to '1'.., then subtract '128' from the address_register.
--> we can not 'work" around this -problema, because it preventts all the instructions from storing their's
result in 'registers'., except for 'load_instructions'.--> Load_instructions can only move the 'data' frm memory to 'registers', in order that they can not be used to emulate "ALU_operations" “broken” by the 'fault'.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.