CMU-SAFARI / MQSim

MQSim is a fast and accurate simulator modeling the performance of modern multi-queue (MQ) SSDs as well as traditional SATA based SSDs. MQSim faithfully models new high-bandwidth protocol implementations, steady-state SSD conditions, and the full end-to-end latency of requests in modern SSDs. It is described in detail in the FAST 2018 paper by Arash Tavakkol et al., "MQSim: A Framework for Enabling Realistic Studies of Modern Multi-Queue SSD Devices" (https://people.inf.ethz.ch/omutlu/pub/MQSim-SSD-simulation-framework_fast18.pdf)
https://people.inf.ethz.ch/omutlu/pub/MQSim-SSD-simulation-framework_fast18.pdf
MIT License
268 stars 144 forks source link

Bug in combining 2 uint32_t #72

Closed De-Broglie-Programmer closed 2 months ago

De-Broglie-Programmer commented 7 months ago

In ssd/Host_Interface_SATA.cpp and ssd/Host_Interface_NVMe.cpp, the function Request_Fetch_Unit_NVMe::Process_pcie_read_message gets the new_request->Start_LBA (uint64_t) by combining two uint32_t fields of Command_specific. However it left shift the upper bits by 31 but not 32.

new_request->Start_LBA = ((LHA_type)sqe->Command_specific[1]) << 31 | (LHA_type)sqe->Command_specific[0];

I believe that it should be: new_request->Start_LBA = ((LHA_type)sqe->Command_specific[1]) << 32 | (LHA_type)sqe->Command_specific[0];

Maybe I misunderstood it. Does anyone find the same issue :)