Availability and Controller support

Just to make this clear, TLC isn't anything new. For example Hynix had a 32Gb 48nm TLC die in 2008. This is because TLC was originally used for devices like USB flash drives, where its poor endurance would be negligible. Most SSD OEMs have been toying with TLC SSDs for at least a year now but we haven't seen any commercial products. OCZ had originally planned to introduce its first TLC based SSD in the Q1 2012, however TLC pricing simply hasn't made sense yet. Unless OCZ can leverage a significant cost savings over 2-bit-per-cell MLC, the added headaches of bringing a lower performing TLC part to market don't make sense.

However there's still significant motivation to migrate towards TLC NAND. Further bringing down costs, particularly for consumer SSDs aimed at light, particularly read heavy workloads makes a lot of sense. Increasing pressure from Intel to deliver cheaper SSD enabled Ultrabooks, and Apple's desire to move all mainstream Macs to solid state storage are two major motivations. MLC NAND pricing will eventually get low enough to meet these (and more) needs, but TLC definitely accelerates the process.

TLC does require controller and firmware support. In the client SSD space only OCZ has been aggressive with announcing that its Indilinx Everest controller supports 3-bit-per-cell NAND. 

Adding controller support for an extra bit per cell is more than just updating the datasheet and claiming it works. The ECC engine needs to be updated as the controller will face more frequent and more severe errors with TLC NAND (and its associated lower endurance rating).

Maintaining low write amplification is even more important with TLC NAND. With significantly fewer available program/erase cycles, burning through them due to high write amplification isn't acceptible. While NAND endurance isn't really an issue for most client MLC drives, it may be an issue for TLC based drives. 

Weaknesses of TLC: One Step Worse than MLC Final Thoughts


View All Comments

  • ionis - Friday, February 24, 2012 - link

    Both paragraphs you quoted state that TLC has 8 states.

    "TLC takes that a step further and stores three bits per cell, or eight voltage states (000, 001, 010, 011, 100, 101, 110, and 111)."

    "With MLC, there are four states, and eight states with TLC. "
  • JMC2000 - Friday, February 24, 2012 - link

    That is the total number of voltage states per cell, i.e.:

    1 bpc = 2 voltage states per cell (2^1)
    2 bpc = 4 voltage states per cell (2^2)
    3 bpc = 8 voltage states per cell (2^3)

    The voltage states are what allow each bit to read as 0 or 1. TLC has 8 voltage states to allow intermediary changes in the values of the three bits in each cell: 000, 001, 010, 011, 100, 101, 110 and 111.
  • ionis - Friday, February 24, 2012 - link

    Yes. That's the argument. So it should go 16->32->64. Where is the 48 coming from?

    P.S. we're running out of space in this thread!
  • Andunestel - Friday, February 24, 2012 - link

    The commenter above explained.

    It's not double each time. The number of combinations, or voltage states, increases exponentially with the number of binary digits represented.

    SLC 1 bit (0,1) = 2 states
    MLC 2 bits (00,01,10,11) = 4 states
    TLC 3 bits ( 000,001,010,011,110,111) = 6 states

    Notice that MLC is 100% > SLC, but TLC is only 50% > MLC?

    In other words:
    SLC = 16GiB
    MLC = SLC x 2 = 32 GiB
    TLC = SLC x 3 = 48 GiB
    - or -
    TLC = MLC x 2.5 = 48GiB
  • Taracta - Sunday, February 26, 2012 - link

    For TLC you have left out 100 and 101 so you would have

    TLC 3 bits (000, 001, 010, 011, 100, 101, 110, 111) = 8 STATES!

    The information is stored per CELL and the same cell is used for SLC, MLC and TLC. The difference between them is the amount of bits per cell that is all. It is not 1 MLC = 2 SLC or 1 TLC = 3 SLC. It is if cell has:

    2 electron states = SLC
    4 electron states = MLC
    8 electron states = TLC

    In binary these states are represented by:

    2 states = 1bit
    4 states = 2bits
    8 states = 3bits
  • This Guy - Friday, February 24, 2012 - link

    Your confusing bits with data. Let's look at this problem in decimals.

    If you have one symbol between 0 and 9, you can represent any number 0-9.

    If you have two symbols, 0-9, you can represent any number between 0-99

    If you have 3, you can represent 0-999

    BUT you still only have three symbols.

    Back to binary, a SLC stores 1bit, MLC 2bits and a TLC 3bits. So if you have 3 SLCs, you have 3 bits and 8 possible states. Exactly the same as one TLC. I'll expand this to make this point clear:

    # Cells | # Bits | # Bits | # States

    6 SLC = 6x1bit = 6bits = 2^6 states
    3 MLC = 3x2bit = 6bits = 2^6 states
    2 TLC = 2x3bit = 6bits = 2^6 states

    All three configurations can store the same data. So to answer your question, the logical blocks which SLC, MLC and TLC apear to be based on have sixteen cells per block. Hence:

    16 SLC = 16 x 1bit = 16 bits
    = 2^16 states

    16 MLC = 16 x 2bit = 32 bits
    = 2^32 states

    16 TCL = 16 x 3bit = 48 bits
    = 2^48 states

    I know this was long and tedious, but if I'm not going to recheck this tread and I wanted to make sure I gave enough information that most people reading this should be able to understand the difference between bits and data.
  • Taracta - Sunday, February 26, 2012 - link

    You do notice that in your decimal example that it is increasing by powers of 10 so why in your binary exapmple it is not increasing by powers of 2?

    16 SLC = 16 x 2^1 bit = 32bits

    16 MLC = 16 x 2^2 bit = 64bits

    16 TLC = 16 x 2^3 bit = 128bits

    No, your exapmples are incorrect so you just further confused the issue.
  • KitsuneKnight - Sunday, February 26, 2012 - link

    SLC doesn't have two bits, it has one. It's not 2 raised to the blah, it's just blah. Same issue applies to your MLC & TLC examples.

    SLC can _represent_ two values, 'on' or 'off'. MLC can represent 4 values ('on' or 'off' | 'on' or 'off'). And, likewise, TLC represents 8 values ('on' or 'off' | 'on' or 'off' | 'on' or 'off'). As you might notice, each grouping of 'on' and 'off' is a single bit.

    His examples are completely correct.
  • JMC2000 - Friday, February 24, 2012 - link

    (What I would give for an EDIT function)

    I forgot to add that if you had 8 bits per cell, you would have 256 voltage states (0 or 1 for each bit, plus the different variations of 8 on or off bits), though I will not list all possible combinations, as it would take too much time/room.
  • Taracta - Sunday, February 26, 2012 - link

    I completely agree with you. The whole premise of the article is being based on the incorrect graph while having in places, the correct information in the article. There is a difference between place holders and values. SLC - 1 bit place holder 2 bits stored, MLC - 2 bits place holder 4 bits stored and TLC 3 bit place holder 8 bits stored. Reply

Log in

Don't have an account? Sign up now