1. A memory controller for providing flexible management of a heterogeneous memory system of a processor-based system, the memory controller communicatively coupled to a first memory and a second memory having different performance characteristics; the memory controller comprising a software-configurable Quality of Service (QoS) policy table providing a plurality of QoS policy entries, each QoS policy entry comprising a QoS policy state and associated with a QoS identifier (QoSID) of one or more QoSIDs, the QoSID associated with one or more of a plurality of memory regions, wherein the plurality of memory regions reside within the first memory, the second memory, or both; and the memory controller configured to: receive a memory access request comprising a memory address corresponding to a memory region of the plurality of memory regions; identify a software-configurable QoSID associated with the memory address; associate, using the QoS policy table, the QoSID associated with the memory address with a QoS policy state; and apply the QoS policy state to perform a memory access operation on one of the first memory and the second memory.