OVM sequence and OVM sequencer interface via m_sequencer and p_sequencer?

HI,

the sequences and sequencer interface with special references are m_sequencer and p_sequencer.

m_sequencer reference exit with ovm_sequencer_base and ovm_sequence_item .
p-sequencer reference exit with ovm_sequencer and ovm_sequence.

and
the start task exit inside ovm_sequence.

whenever we create sequence with using ovm_sequence,the start task is available. if the create sequence is associated with sequencer (which is created with ovm_sequencer) then the reference interface between them is p_sequencer.

why m_sequencer set as default reference while calling start task ?
when should we override the references ?
what is `ovm_declare_p_sequencer macro and m_set_p_sequencer ?