0
\$\begingroup\$

Hello as the questions describes I'd like to know whether it's possible to do this ? Can binary executable code which is executed by a processor core possibly be stored using physical silicon gates ? I understand that a device's OS or user application code can be stored in ROM or EEPROM or in flash memory but is it possible to store using physical silicon gates only ? Similarly can a ROM Boot loader be stored using physical silicon gates instead of ROM or flash memory ?[UPDATE] Can binary code be stored on the same area of the die used to represent the core (CPU) design structures ? So using logic gate transistors but not using combinational logic gate transistors (ROM) and not using floating-gate transistors NAND and NOR logic gates (flash memory) and not using floating-gate MOSFET (EEPROM) ?

\$\endgroup\$
  • \$\begingroup\$ EEPROM and ROM are usually implemented using silicon gates, so yes. \$\endgroup\$ – Robert Stiffler Nov 19 '15 at 7:57
  • \$\begingroup\$ It depends on what you call "silicon gates". If silicon gates = AND, OR etc gates then the answer would be no as EEP(ROM)s use dedicated cells for storing the data. EEPROM or Flash memory use special transistors with an extra floating gate. Such transistors are useless for AND and OR gates. These use standard transistors without a floating gate. \$\endgroup\$ – Bimpelrekkie Nov 19 '15 at 8:08
  • 2
    \$\begingroup\$ Yes it can and it is very common. The PlayStation 2 BIOS was stored in a mask ROM IC on the motherboard. When you're making millions of something, the costs start to make sense for something like that (and at the time, firmware upgrade delivery mechanisms were much less sophisticated). \$\endgroup\$ – Krunal Desai Dec 25 '15 at 16:47
  • 1
    \$\begingroup\$ I found the part I was thinking of -- the Macronix MX23L6410A is an example of a mask ROM and is the model used in the PlayStation 2. \$\endgroup\$ – Krunal Desai Dec 25 '15 at 18:32
  • 1
    \$\begingroup\$ nor and nand flash is not the same thing as nor and nand gates gates. flash is a floating gate system like eeprom. nor and nand just a term used the describe the structure of the floating gate cell. \$\endgroup\$ – Jasen Dec 27 '15 at 9:00
2
\$\begingroup\$

In fact, there are hard-coded bits of data on many processors and other such devices, even complete bootloaders.

There are many ways to do that, sometimes it's just an array of hardwired shorts to VCC or GND that are selected in a grid, just like the bit-cells in an EEPROM device.

Or sometimes it's a row driver with diodes and pull down or pull up resistors, or a similar trick, where the row driver decodes the address it's given, much like a 3-to-8 decoder, but larger:

Consider this "8 row, 3bit Hardwired rom":

schematic

simulate this circuit – Schematic created using CircuitLab

And since I'm not a chip designer, I'm probably overlooking some details here and there, but I'm quite sure there's a lot of ways this similar trick gets done. In some, or even many, cases they may make a grid with all diodes, or links, present and then laser etch away the paces where they want the opposite bit to come out, for example with unique IDs, where every chip gets lasered an increasing number in a fixed spot in the memory, that will not decay over time like Flash or EEPROM (though the latter has become nearly ageless by now).

\$\endgroup\$
0
\$\begingroup\$

Executable code is just data, ones and zeros. How to store that ? You need something where you enter the address of the memory location you want to read and at the output the corresponding data appears. Can you make such a thing using standard gates (AND, OR etc.) ? Yes, it is just combinatory logic.

Is that efficient ? No it is not, for it to be efficient you want to use the smallest devices possible. These smallest devices are specially designed to store data and to fit as many as possible on a given area.

If you would use standard logic gates (AND, OR etc) then this would use a lot more area. You would also need to connect them in certain ways to define if a zero or a one is stored.

\$\endgroup\$
0
\$\begingroup\$

Fusing or anti-fusing is probably the simplest way to store bits in silicon. All it takes in a higher current to blow the fuses which then corresponds to a zero or a one. There's various implementations of fusing which are described in more detail here.

\$\endgroup\$
0
\$\begingroup\$

Yes you can encode binary data in an arrangement of gates.

eg: a collection of and gates and inverters to decode each address into a individual row line, and then combine the row lines as needed with or gates to get the desired data output.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.