Do we need to implement load-store forwarding?
You could. but you don't have to do.
Do we need to differentiate load and store?
no, for this assignment, you can treat them equally,
Do memory instructions wait op_latency[OP_LD] op_latency[OP_ST] in an execution stage?
NO, memory instructions just wait only one cycle in the execution stage.