Why do SSDs have weird sizes?

Solution 1:

While a lot of modern SSDs like the 840 EVO series do provide the sizes you’re used to like, the mentioned 256GB, manufacturers used to preserve a bit of storage for mechanisms fighting performance drops and defects.

If you—for example—bought a 120GB drive, you can be pretty sure that it’s really 128GB internally. The preserved space simply gives the controller/firmware room for stuff like TRIM, Garbage Collection and Wear Leveling. It has been common practice to leave a bit of space unpartioned—on top of the space that has already been made invisible by the controller—when SSDs first hit the market, but the algorithms have gotten significantly better, so you shouldn’t need to do that anymore.

EDIT: There have been some comments regarding the fact that this phenomenon has to be explained with the discrepancy between advertised space, stated in GigaBytes (e.g. 128x 10^9 Bytes) versus the GibiByte value the operating system shows, which is—most of the time—a power of two, calculating to 119.2 Gibibyte in this example.

As for as I know, this is something that comes on top of the things already explained above. While I certainly can’t state which exact algorithms need most of that extra space, the calculation stays the same. The manufacturer assembles an SSD that indeed uses a power of two number of flash cells (or a combination of such), though the controller does not make all that space visible to the operating system. The space that’s left is advertised as Gigabytes, netting you 111 Gibibyte in this example.

Solution 2:

Both mechanical and solid state hard drives have raw capacity greater than their rated capacity. The "extra" capacity is held aside to replace bad sectors, so the drives don't have to be perfect off the assembly line, and so that bad sectors can be re-mapped later during use to the spare sectors. During initial testing at the factory, any bad sectors are mapped to the spare sectors. As the drive is used, it monitors the sectors (using error correction routines to detect bit level errors) and when a sector starts going bad, it copies the sector to a spare, then remaps it. Whenever that sector is requested, the drive goes to the new sector, rather than the original sector.

On mechanical drives, they can add arbitrary amounts of spare storage since they control the servo, head, and platter encoding, so they can have a rated storage of 1 terabyte with an additional 1 gigabyte of spare space for sector remapping.

However, SSDs use flash memory, which is always manufactured in powers of two. The silicon required to decode an address is the same for an 8 bit address accessing 200 bytes as an 8 bit address accessing 256 bytes. Since that part of the silicon doesn't change in size, then the most efficient use of the silicon realestate is to use powers of two in the actual flash capacity.

So the drive manufacturers are stuck with a total raw capacity in powers of 2, but they still need to set aside a portion of the raw capacity for sector remapping. This leads to 256GB of raw capacity providing only 240GB of usable capacity, for instance.