Design Project One:
Frequently-Asked Questions
Last updated: $Date: 2008-03-18 22:04:17 -0400 (Tue, 18 Mar 2008) $
Q: Do I really need to stay within 2,500 words?
A: Yes. We expect you to adhere to the word limit. That said,
we're not going to penalize you for being just a few words over the
limit -- we're mostly concerned with the quality of your report. If
your report contains 2,500 + X words, and you're worried whether X
counts as "just a few," you should probably cut some words.
Remember to print the word count at the end of your final
report.
Q: Do the figure captions count against the word limit?
A: Yes. Don't skimp on captions to lower your word count however;
appropriate captions are important for clarity.
Q: What does size() return? Can it change over time?
A: Size() returns the capacity of the device (after format() is
called), not the current amount of free space. For the purposes of
this assignment, size() is fixed over the lifetime of the device.
Q: What happens when a block is erased 100,001 times?
A: Even with a perfect wear-leveling strategy, your flash device
will have a limited lifespan. Do not focus on device behavior towards
the end of its life, and for simplicity assume that once one block has
been erased 100,001 times, the behavior of the entire device is
undefined. You should adopt a wear leveling strategy that prolongs the
life of the device for as long as possible.
Q: Can we write multiple times to different bytes within a
page, without performing an erasure?
A: In this project
you can only write once to the data area of a page,
regardless of whether you write to the entire page or a subset of
bytes. You must erase the block containing the page before writing to the page data area
again. While you can make four individual writes to the
metadata section between erasures, you can't write to the same byte
more than once.
Q: What is the exact workload the device will be subjected to?
I really need to know.
A: You are designing the flash
controller for a USB memory stick. You have no control over what
workloads users will subject it to, so should aim to be as general as
possible. Expect that the device may be subjected to random and
sequential reads and writes, and that some sectors may be written more
frequently than others. There will be inevitable tradeoffs involved,
but you should identify these in your analysis.
Q: Do we need to store pages in RAM before returning them in
response to a read() call?
Assume you can write directly from flash into the void* buffer
provided by the host in a read() call - you don't need to store the
page in RAM in the interim. You can also perform a flash_write() by
writing directly from the buffer provided in a write()
call. (ie. you can pass the same pointer from write() to
flash_write() and from flash_read() to read())
Q: Can we assume the existence of a random number
generator?
Yes, you may assume that the device provides support for generating
high-quality (uniformly distributed) random numbers.
|