Suppose you have a 64 gigabyte flash storage system, with a 4096 byte page size. How big would the flash translation table be, assuming each page has a 32 bit address, and the table is stored as an array.

I think the answer is 20 pages, does that sound about right?

Not quite.

64GB/4K=16MB page addresses.
Each address requires 32 bits, or 4 bytes.
The array size would therefore be 16MB*4=64MB.
If they have to be expressed in pages, then the number of pages
= 64MB/4K
= 16K pages.

To determine the size of the flash translation table, you need to calculate how many entries it would contain.

First, calculate the number of pages in the flash storage system:
64 gigabytes = 64 * 1024 * 1024 * 1024 bytes
4096 byte page size = 4096 bytes

Number of pages = Total flash storage size / Page size
Number of pages = (64 * 1024 * 1024 * 1024 bytes) / 4096 bytes = (64 * 1024 * 1024 * 1024) / 4096 = 16,777,216 pages

Next, calculate the size of each entry in the flash translation table:
32-bit address size = 32 bits = 4 bytes

So, each entry in the flash translation table requires 4 bytes.

Finally, calculate the size of the flash translation table:
Size of translation table = Number of pages * Entry size
Size of translation table = 16,777,216 pages * 4 bytes = 67,108,864 bytes

Now, convert the size of the translation table in bytes to pages:
Size of translation table (in pages) = Size of translation table (in bytes) / Page size
Size of translation table (in pages) = 67,108,864 bytes / 4096 bytes = 16,384 pages

Therefore, the size of the flash translation table, stored as an array, would be 16,384 pages. Hence, the answer of 20 pages is incorrect.