Featured post

Top 5 books to refer for a VHDL beginner

VHDL (VHSIC-HDL, Very High-Speed Integrated Circuit Hardware Description Language) is a hardware description language used in electronic des...

Showing posts with label Memories. Show all posts
Showing posts with label Memories. Show all posts

Monday, 21 January 2013

Is ReRAM the end of NAND flash?

a85bdfc871ed6d6fa42b53abc31e313c A primary storage technology: ReRAM.

NAND flash stores data in a little cloud of electrons in a quantum well. The presence or absence of charge - or the strength of the charge - tells us what bits are stored.

ReRAM stores data through changes in the resistance of a cell. There are a variety of ReRAM technologies in development, including phase-change memory (PCM) and HP's memristors, based on at least a half-dozen competing materials.

Expect healthy competition as the industry and buyers sort out the details.

Advantages

While different implementations have different specs, all ReRAM has key advantages over today's common NAND flash.

  • Speed. ReRAM can be written much faster - in nanoseconds rather than milliseconds - making it better for high-performance applications.
  • Endurance. MLC flash - the most common - can only handle about 10,000 writes. ReRAM can handle millions.
  • Power. Researchers have demonstrated micro-Amp write power and expect to get in the nano-Amp range soon, which makes ReRAM much more power efficient than NAND flash, which requires voltage pumps to achieve the 20 volts required for writes.

The Storage Bits take

NAND flash will retain advantages in cost and density for the foreseeable future, meaning that it will be here for decades to come. So where will ReRAM fit in the storage hierarchy?

  • Data integrity. Losing a snapshot is no big deal. Losing your checking account deposit is. Mission critical applications will prefer ReRAM devices - and can afford them.
  • Performance. Today's SSDs go through many contortions to give good performance - and don't succeed all that well. A fast medium removes complexity as well as increasing performance.
  • Mobility. Depending on how the never-ending tug-of-war between network bandwidth and memory capacity develops, consumers may come to prefer large capacity storage on their mobile devices. If so, ReRAM's power-sipping ways will be an asset on high-end products.

Toshiba is well-positioned to enter these high-end markets with SSDs analogous to today's 15k disks. It may not be a huge market, but the margins will make it worthwhile.

Other vendors, including Panasonic, Micron and Samsung, are also working on ReRAM products. Another interesting question: to what extent will fast ReRAM replace DRAM in systems?

Get free daily email updates!

Follow us!

Sunday, 9 September 2012

Memories

Formal Definition

Memories are arrays of registers.

Simplified Syntax

reg memory_width memory_identifier memory_depth;

integer memory_identifier memory_length;

time memory_identifier memory_length;

Description

Memories can be declared only for reg, integer and time data types. Depth of memory should be declared by specifying a range following the memory identifier (Example 1). Registers and memories can be declared in the same line (Example 2). Elements of memory type can be accessed by memory index (Example 3). An assignment to a memory identifier without specified memory index is illegal. Bit-selects and part-selects on memory elements are not allowed. If access to individual bits of memory is needed, then a word containing that bit should be assigned to a register with the same width. All operations should then be done on this register and the result should be assigned back to the memory word (Example 5). Memory words can be accessed individually, but bit-select and part-select operations cannot be done on memories or memory words directly.

Vector declaration and memory declaration are not the same. If a variable is declared as a vector, all bits can be assigned a value in one statement. If a variable is declared as memory then a value to each element should be assigned separately (Example 4).

Examples

Example 1

reg [7:0] mem[1023:0];
integer i_mem[8:1];

The 'mem' variable is a memory that contains 1024 8-bit words.

The 'i_mem' variable has 8 words (each word is an integer register).

Example 2

reg [3:0] mem[255:0], r;

This line a declares 4-bit register 'r' and memory 'mem', which contains 256 4-bit words.

Example 3

reg [7:0] mem [3:0], r;
mem[0] = 7;
r = mem[3];
mem[1] = r;

Example 4

reg [7:0] vect;
reg array[7:0];
vect = 8'b11001010;
array[7] = 1'b1;
array[6] = 1'b1;
array[5] = 1'b0;
array[4] = 1'b0;
array[3] = 1'b1;
array[2] = 1'b0;
array[1] = 1'b1;
array[0] = 1'b0;

If the variable is declared as a vector (variable vect), then the new value can be assigned to all bits at the same time. If a variable is declared as a memory (variable array) type, then the new value should be assigned to each element of memory separately.

Example 5

reg [7:0] mem[255:0], r;
r = mem[135];
r[3:1] = 3'b100;
mem[135] = r;

This example shows how to access particular bits of memory.

Important Notes

· Memories can be declared only for reg, integer and time registers types.

· Bit-selects and part-selects on memory elements are prohibited.